Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: src/plugin/PluginClass.cpp

Issue 11557015: Tooltip notification. Check for update fixes. (Closed)
Patch Set: Created Sept. 5, 2013, 10:43 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 #include "PluginStdAfx.h" 1 #include "PluginStdAfx.h"
2 2
3 #include "PluginClass.h" 3 #include "PluginClass.h"
4 #include "PluginSettings.h" 4 #include "PluginSettings.h"
5 #include "PluginSystem.h" 5 #include "PluginSystem.h"
6 #ifdef SUPPORT_FILTER 6 #ifdef SUPPORT_FILTER
7 #include "PluginFilter.h" 7 #include "PluginFilter.h"
8 #endif 8 #endif
9 #include "PluginMimeFilterClient.h" 9 #include "PluginMimeFilterClient.h"
10 #include "PluginClient.h" 10 #include "PluginClient.h"
11 #include "PluginClientFactory.h" 11 #include "PluginClientFactory.h"
12 #include "PluginMutex.h" 12 #include "PluginMutex.h"
13 #include "sddl.h" 13 #include "sddl.h"
14 #include "PluginUtil.h" 14 #include "PluginUtil.h"
15 #include "PluginUserSettings.h" 15 #include "PluginUserSettings.h"
16 #include "../shared/Utils.h"
16 17
17 #include "../shared/Dictionary.h" 18 #include "../shared/Dictionary.h"
18 19
Felix Dahlke 2013/09/11 15:22:59 As before, no need to add another line of whitespa
20
19 #ifdef DEBUG_HIDE_EL 21 #ifdef DEBUG_HIDE_EL
20 DWORD profileTime = 0; 22 DWORD profileTime = 0;
21 #endif 23 #endif
22 24
23 typedef HANDLE (WINAPI *OPENTHEMEDATA)(HWND, LPCWSTR); 25 typedef HANDLE (WINAPI *OPENTHEMEDATA)(HWND, LPCWSTR);
24 typedef HRESULT (WINAPI *DRAWTHEMEBACKGROUND)(HANDLE, HDC, INT, INT, LPRECT, LPR ECT); 26 typedef HRESULT (WINAPI *DRAWTHEMEBACKGROUND)(HANDLE, HDC, INT, INT, LPRECT, LPR ECT);
25 typedef HRESULT (WINAPI *CLOSETHEMEDATA)(HANDLE); 27 typedef HRESULT (WINAPI *CLOSETHEMEDATA)(HANDLE);
26 28
27 29
28 HICON CPluginClass::s_hIcons[ICON_MAX] = { NULL, NULL, NULL }; 30 HICON CPluginClass::s_hIcons[ICON_MAX] = { NULL, NULL, NULL };
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 else 208 else
207 { 209 {
208 url = m_tab->GetDocumentUrl(); 210 url = m_tab->GetDocumentUrl();
209 } 211 }
210 212
211 return url; 213 return url;
212 } 214 }
213 215
214 DWORD WINAPI CPluginClass::StartInitObject(LPVOID thisPtr) 216 DWORD WINAPI CPluginClass::StartInitObject(LPVOID thisPtr)
215 { 217 {
218 INITCOMMONCONTROLSEX commControls;
219 commControls.dwSize = sizeof(INITCOMMONCONTROLSEX);
220 commControls.dwICC = ICC_USEREX_CLASSES | ICC_STANDARD_CLASSES | ICC_BAR_CLASS ES;
Wladimir Palant 2013/09/11 13:07:06 Isn't ICC_BAR_CLASSES enough for a tooltip?
221 InitCommonControlsEx(&commControls);
Wladimir Palant 2013/09/11 13:07:06 Given that common controls are used by the Notific
Felix Dahlke 2013/09/11 15:22:59 I'd rather keep this where it is, the call is not
Wladimir Palant 2013/09/12 14:13:34 It is. Looking at the documentation, InitCommonCon
Felix Dahlke 2013/09/12 14:23:49 Then let's put it in the NotificationMessage class
Oleksandr 2013/09/12 14:26:26 NotificationMessage sounds best for me as well the
216 if (thisPtr == NULL) 222 if (thisPtr == NULL)
217 return 0; 223 return 0;
218 if (!((CPluginClass*)thisPtr)->InitObject(true)) 224 if (!((CPluginClass*)thisPtr)->InitObject(true))
219 { 225 {
220 ((CPluginClass*)thisPtr)->Unadvice(); 226 ((CPluginClass*)thisPtr)->Unadvice();
221 } 227 }
222 228
223 return 0; 229 return 0;
224 } 230 }
225 231
(...skipping 1037 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 int nCommand = ::TrackPopupMenu(hMenu, nMenuFlags, pt.x, pt.y, 0, hMenuWnd, 0) ; 1269 int nCommand = ::TrackPopupMenu(hMenu, nMenuFlags, pt.x, pt.y, 0, hMenuWnd, 0) ;
1264 1270
1265 ::DestroyMenu(hMenu); 1271 ::DestroyMenu(hMenu);
1266 ::DestroyWindow(hMenuWnd); 1272 ::DestroyWindow(hMenuWnd);
1267 1273
1268 switch (nCommand) 1274 switch (nCommand)
1269 { 1275 {
1270 case ID_MENU_UPDATE: 1276 case ID_MENU_UPDATE:
1271 { 1277 {
1272 CPluginClient* client = CPluginClient::GetInstance(); 1278 CPluginClient* client = CPluginClient::GetInstance();
1273 client->CheckForUpdates(); 1279 notifMessage.SetParent(m_hPaneWnd);
1280 Dictionary* dictionary = Dictionary::GetInstance();
1281 std::wstring checkingText = dictionary->Lookup("updater", "checking-for-up dates-text");
1282 std::wstring checkingTitle = dictionary->Lookup("updater", "checking-for-u pdates-title");
1283
1284 notifMessage.Show(checkingText.c_str(), TTI_INFO);
1285 notifMessage.SetTextAndIcon(checkingText.c_str(), checkingTitle.c_str(), T TI_INFO);
Wladimir Palant 2013/09/11 13:07:06 Assuming that NotificationMessage is our class, th
1286 client->CheckForUpdates(m_hPaneWnd);
1274 } 1287 }
1275 break; 1288 break;
1276 case ID_MENU_DISABLE: 1289 case ID_MENU_DISABLE:
1277 { 1290 {
1278 CPluginSettings* settings = CPluginSettings::GetInstance(); 1291 CPluginSettings* settings = CPluginSettings::GetInstance();
1279 1292
1280 settings->TogglePluginEnabled(); 1293 settings->TogglePluginEnabled();
1281 1294
1282 // Enable / disable mime filter 1295 // Enable / disable mime filter
1283 s_criticalSectionLocal.Lock(); 1296 s_criticalSectionLocal.Lock();
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
1770 break; 1783 break;
1771 case SC_CLOSE: 1784 case SC_CLOSE:
1772 break; 1785 break;
1773 1786
1774 case WM_UPDATEUISTATE: 1787 case WM_UPDATEUISTATE:
1775 { 1788 {
1776 CPluginTab* tab = GetTab(::GetCurrentThreadId()); 1789 CPluginTab* tab = GetTab(::GetCurrentThreadId());
1777 if (tab) 1790 if (tab)
1778 { 1791 {
1779 tab->OnActivate(); 1792 tab->OnActivate();
1793 RECT rect;
1794 GetWindowRect(pClass->m_hPaneWnd, &rect);
1795 pClass->notifMessage.Move(rect.left + (rect.right - rect.left) / 2, rect .top + (rect.bottom - rect.top) / 2);
1780 } 1796 }
1797 pClass->notifMessage.Hide();
Wladimir Palant 2013/09/11 13:07:06 Shouldn't the notification be only hidden if we ge
1798 }
1799 break;
1800 case WM_WINDOWPOSCHANGING:
1801 {
1802 RECT rect;
1803 GetWindowRect(pClass->m_hPaneWnd, &rect);
1804 pClass->notifMessage.Move(rect.left + (rect.right - rect.left) / 2, rect.t op + (rect.bottom - rect.top) / 2);
Wladimir Palant 2013/09/11 13:07:06 Shouldn't we check whether the notification is act
1805 }
1806 break;
1807 case WM_ALREADY_UP_TO_DATE:
1808 {
1809 Dictionary* dictionary = Dictionary::GetInstance();
1810 std::wstring upToDateText = dictionary->Lookup("updater", "update-already- up-to-date-text");
1811 std::wstring upToDateTitle = dictionary->Lookup("updater", "update-already -up-to-date-title");
1812 pClass->notifMessage.SetTextAndIcon(upToDateText.c_str(), upToDateTitle.c_ str(), TTI_INFO);
1813 }
1814 break;
1815 case WM_UPDATE_CHECK_ERROR:
1816 {
1817 Dictionary* dictionary = Dictionary::GetInstance();
1818 std::wstring errorText = dictionary->Lookup("updater", "update-error-text" );
1819 std::wstring errorTitle = dictionary->Lookup("updater", "update-error-titl e");
1820 pClass->notifMessage.SetTextAndIcon(errorText.c_str(), errorText.c_str(), TTI_ERROR);
1821 }
1822 break;
1823 case WM_DOWNLOADING_UPDATE:
1824 {
1825 Dictionary* dictionary = Dictionary::GetInstance();
1826 std::wstring downloadingText = dictionary->Lookup("updater", "downloading- update-text");
1827 std::wstring downloadingTitle = dictionary->Lookup("updater", "downloading -update-title");
1828 pClass->notifMessage.SetTextAndIcon(downloadingText.c_str(), downloadingTi tle.c_str(), TTI_ERROR);
1781 } 1829 }
1782 break; 1830 break;
1783 } 1831 }
1784 1832
1785 return DefWindowProc(hWnd, message, wParam, lParam); 1833 return DefWindowProc(hWnd, message, wParam, lParam);
1786 } 1834 }
1787 1835
1788 1836
1789 void CPluginClass::UpdateStatusBar() 1837 void CPluginClass::UpdateStatusBar()
1790 { 1838 {
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1912 } 1960 }
1913 } 1961 }
1914 } 1962 }
1915 1963
1916 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); 1964 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT);
1917 } 1965 }
1918 1966
1919 return hTabWnd; 1967 return hTabWnd;
1920 1968
1921 } 1969 }
OLDNEW

Powered by Google App Engine
This is Rietveld