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

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

Issue 11013110: Cleanup (Closed)
Patch Set: More beautification and addressing comments Created July 29, 2013, 12:13 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
« no previous file with comments | « src/plugin/PluginClass.h ('k') | src/plugin/PluginClassThread.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "PluginHttpRequest.h"
13 #include "PluginMutex.h" 12 #include "PluginMutex.h"
14 #include "DownloadSource.h"
15 #include "sddl.h" 13 #include "sddl.h"
16 #include "PluginUtil.h" 14 #include "PluginUtil.h"
17 #include "PluginUserSettings.h" 15 #include "PluginUserSettings.h"
18 16
19 #include "../shared/Dictionary.h" 17 #include "../shared/Dictionary.h"
20 18
21 #ifdef DEBUG_HIDE_EL 19 #ifdef DEBUG_HIDE_EL
22 DWORD profileTime = 0; 20 DWORD profileTime = 0;
23 #endif 21 #endif
24 22
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 m_hStatusBarWnd = NULL; 63 m_hStatusBarWnd = NULL;
66 m_hPaneWnd = NULL; 64 m_hPaneWnd = NULL;
67 m_nPaneWidth = 0; 65 m_nPaneWidth = 0;
68 m_pWndProcStatus = NULL; 66 m_pWndProcStatus = NULL;
69 m_hTheme = NULL; 67 m_hTheme = NULL;
70 m_isInitializedOk = false; 68 m_isInitializedOk = false;
71 69
72 70
73 m_tab = new CPluginTab(this); 71 m_tab = new CPluginTab(this);
74 72
75 // Load / create settings
76 CPluginSettings* settings = CPluginSettings::GetInstance();
77
78 CPluginSystem* system = CPluginSystem::GetInstance(); 73 CPluginSystem* system = CPluginSystem::GetInstance();
79 74
80 std::wstring locale((LPCWSTR)system->GetBrowserLanguage()); 75 std::wstring locale((LPCWSTR)system->GetBrowserLanguage());
81 Dictionary::Create(locale); 76 Dictionary::Create(locale);
82
83 bool isMainTab = settings->IncrementTabCount();
84
85 if (isMainTab)
86 {
87 // Prepare settings
88 settings->SetMainProcessId();
89 settings->SetMainUiThreadId();
90
91 // Ensure plugin version
92 if (!settings->Has(SETTING_PLUGIN_VERSION))
93 {
94 settings->SetString(SETTING_PLUGIN_VERSION, IEPLUGIN_VERSION);
95 settings->SetFirstRunUpdate();
96 }
97
98 // First run or deleted settings file (dictionary version = 1)
99 if (settings->GetString(SETTING_DICTIONARY_VERSION, L"1").Compare(L"1") == 0 )
100 {
101 settings->SetFirstRun();
102 }
103
104 // Update?
105 CString oldVersion = settings->GetString(SETTING_PLUGIN_VERSION);
106 if (settings->IsFirstRunUpdate() || settings->GetString(SETTING_PLUGIN_UPDAT E_VERSION) == IEPLUGIN_VERSION || oldVersion != IEPLUGIN_VERSION)
107 {
108 settings->SetString(SETTING_PLUGIN_VERSION, IEPLUGIN_VERSION);
109
110 settings->SetFirstRunUpdate();
111 }
112
113 int info = settings->GetValue(SETTING_PLUGIN_INFO_PANEL, 0);
114
115 #ifdef ENABLE_DEBUG_RESULT
116 CPluginDebug::DebugResultClear();
117 #endif
118
119 #ifdef ENABLE_DEBUG_INFO
120 if (info == 0 || info > 2)
121 {
122 CPluginDebug::DebugClear();
123 }
124 #endif // ENABLE_DEBUG_INFO
125
126 settings->Write(false);
127 }
128 } 77 }
129 78
130 CPluginClass::~CPluginClass() 79 CPluginClass::~CPluginClass()
131 { 80 {
132 delete m_tab; 81 delete m_tab;
133
134 CPluginSettings* settings = CPluginSettings::GetInstance();
135
136 settings->DecrementTabCount();
137 } 82 }
138 83
139 84
140 ///////////////////////////////////////////////////////////////////////////// 85 /////////////////////////////////////////////////////////////////////////////
141 // Initialization 86 // Initialization
142 87
143 HRESULT CPluginClass::FinalConstruct() 88 HRESULT CPluginClass::FinalConstruct()
144 { 89 {
145 return S_OK; 90 return S_OK;
146 } 91 }
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 } 204 }
260 } 205 }
261 else 206 else
262 { 207 {
263 url = m_tab->GetDocumentUrl(); 208 url = m_tab->GetDocumentUrl();
264 } 209 }
265 210
266 return url; 211 return url;
267 } 212 }
268 213
269 void CPluginClass::LaunchUpdater(const CString& strPath)
270 {
271 PROCESS_INFORMATION pi;
272 ::ZeroMemory(&pi, sizeof(pi));
273
274 STARTUPINFO si;
275 ::ZeroMemory(&si, sizeof(si));
276 si.cb = sizeof(si);
277 si.wShowWindow = FALSE;
278 CString cpath;
279 if (strPath.Find(L".exe") == strPath.GetLength() - 4)
280 {
281 cpath = strPath;
282 }
283 else
284 {
285 cpath = _T("\"msiexec.exe\" /i \"") + strPath + _T("\" UPDATEPLUGIN=\"True\" ");
286 }
287
288 if (!::CreateProcess(NULL, cpath.GetBuffer(), NULL, NULL, FALSE, CREATE_BREAKA WAY_FROM_JOB, NULL, NULL, &si, &pi))
289 {
290 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UPDATER, PLUGIN_ERROR_UPDATER _CREATE_PROCESS, "Class::Updater - Failed to start process");
291 return;
292 }
293 #ifndef AUTOMATIC_SHUTDOWN
294 else
295 {
296 ::WaitForSingleObject(pi.hProcess, INFINITE);
297 }
298 #endif // not AUTOMATIC_SHUTDOWN
299
300 ::CloseHandle(pi.hProcess);
301 ::CloseHandle(pi.hThread);
302 }
303
304 DWORD WINAPI CPluginClass::StartInitObject(LPVOID thisPtr) 214 DWORD WINAPI CPluginClass::StartInitObject(LPVOID thisPtr)
305 { 215 {
306 if (thisPtr == NULL) 216 if (thisPtr == NULL)
307 return 0; 217 return 0;
308 if (!((CPluginClass*)thisPtr)->InitObject(true)) 218 if (!((CPluginClass*)thisPtr)->InitObject(true))
309 { 219 {
310 ((CPluginClass*)thisPtr)->Unadvice(); 220 ((CPluginClass*)thisPtr)->Unadvice();
311 } 221 }
312 222
313 if ((((CPluginClass*)thisPtr)->m_hPaneWnd == NULL) || (!((CPluginClass*)thisPt r)->IsStatusBarEnabled())) 223 if ((((CPluginClass*)thisPtr)->m_hPaneWnd == NULL) || (!((CPluginClass*)thisPt r)->IsStatusBarEnabled()))
(...skipping 12 matching lines...) Expand all
326 // so we should handle that it is called this way several times during a session 236 // so we should handle that it is called this way several times during a session
327 STDMETHODIMP CPluginClass::SetSite(IUnknown* unknownSite) 237 STDMETHODIMP CPluginClass::SetSite(IUnknown* unknownSite)
328 { 238 {
329 CPluginSettings* settings = CPluginSettings::GetInstance(); 239 CPluginSettings* settings = CPluginSettings::GetInstance();
330 CPluginSystem* system = CPluginSystem::GetInstance(); 240 CPluginSystem* system = CPluginSystem::GetInstance();
331 241
332 MULTIPLE_VERSIONS_CHECK(); 242 MULTIPLE_VERSIONS_CHECK();
333 243
334 if (unknownSite) 244 if (unknownSite)
335 { 245 {
336 if (settings->IsMainProcess() && settings->IsMainUiThread()) 246 DEBUG_GENERAL(L"============================================================ ====================\nNEW TAB UI\n============================================== ==================================")
337 {
338 DEBUG_GENERAL(L"========================================================== ======================\nMAIN TAB UI\n=========================================== =====================================")
339 }
340 else
341 {
342 DEBUG_GENERAL(L"========================================================== ======================\nNEW TAB UI\n============================================ ====================================")
343 }
344 247
345 HRESULT hr = ::CoInitialize(NULL); 248 HRESULT hr = ::CoInitialize(NULL);
346 if (FAILED(hr)) 249 if (FAILED(hr))
347 { 250 {
348 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_COINIT, " Class::SetSite - CoInitialize"); 251 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_COINIT, " Class::SetSite - CoInitialize");
349 } 252 }
350 253
351 s_criticalSectionBrowser.Lock(); 254 s_criticalSectionBrowser.Lock();
352 { 255 {
353 m_webBrowser2 = unknownSite; 256 m_webBrowser2 = unknownSite;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 m_hStatusBarWnd = NULL; 361 m_hStatusBarWnd = NULL;
459 362
460 // Remove instance from the list, shutdown threads 363 // Remove instance from the list, shutdown threads
461 HANDLE hMainThread = NULL; 364 HANDLE hMainThread = NULL;
462 HANDLE hTabThread = NULL; 365 HANDLE hTabThread = NULL;
463 366
464 s_criticalSectionLocal.Lock(); 367 s_criticalSectionLocal.Lock();
465 { 368 {
466 s_instances.Remove(this); 369 s_instances.Remove(this);
467 370
468 if (s_instances.GetSize() == 0)
469 {
470 if (settings->IsMainProcess() && settings->IsMainUiThread())
471 {
472 hMainThread = s_hMainThread;
473 s_hMainThread = NULL;
474 }
475 }
476
477 std::map<DWORD,CPluginClass*>::iterator it = s_threadInstances.find(::GetC urrentThreadId()); 371 std::map<DWORD,CPluginClass*>::iterator it = s_threadInstances.find(::GetC urrentThreadId());
478 if (it != s_threadInstances.end()) 372 if (it != s_threadInstances.end())
479 { 373 {
480 s_threadInstances.erase(it); 374 s_threadInstances.erase(it);
481 } 375 }
482 if (s_instances.GetSize() == 0) 376 if (s_instances.GetSize() == 0)
483 { 377 {
484 CPluginClientFactory::ReleaseMimeFilterClientInstance(); 378 CPluginClientFactory::ReleaseMimeFilterClientInstance();
485 } 379 }
486 } 380 }
487 s_criticalSectionLocal.Unlock(); 381 s_criticalSectionLocal.Unlock();
488 382
489 if (hMainThread != NULL)
490 {
491 s_isMainThreadDone = true;
492
493 ::WaitForSingleObject(hMainThread, INFINITE);
494 ::CloseHandle(hMainThread);
495 }
496
497 // Release browser interface 383 // Release browser interface
498 s_criticalSectionBrowser.Lock(); 384 s_criticalSectionBrowser.Lock();
499 { 385 {
500 m_webBrowser2.Release(); 386 m_webBrowser2.Release();
501 } 387 }
502 s_criticalSectionBrowser.Unlock(); 388 s_criticalSectionBrowser.Unlock();
503 389
504 if (settings->IsMainProcess() && settings->IsMainUiThread()) 390 DEBUG_GENERAL("============================================================= ===================\nNEW TAB UI - END\n========================================= =======================================")
505 {
506 DEBUG_GENERAL("=========================================================== =====================\nMAIN TAB UI - END\n====================================== ==========================================")
507 }
508 else
509 {
510 DEBUG_GENERAL("=========================================================== =====================\nNEW TAB UI - END\n======================================= =========================================")
511 }
512 391
513 ::CoUninitialize(); 392 ::CoUninitialize();
514 } 393 }
515 394
516 return IObjectWithSiteImpl<CPluginClass>::SetSite(unknownSite); 395 return IObjectWithSiteImpl<CPluginClass>::SetSite(unknownSite);
517 } 396 }
518 397
519 bool CPluginClass::IsStatusBarEnabled() 398 bool CPluginClass::IsStatusBarEnabled()
520 { 399 {
521 HKEY pHkey; 400 HKEY pHkey;
(...skipping 27 matching lines...) Expand all
549 428
550 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); 429 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser();
551 if (browser) 430 if (browser)
552 { 431 {
553 HRESULT hr = S_OK; 432 HRESULT hr = S_OK;
554 hr = browser->get_StatusBar(&isVisible); 433 hr = browser->get_StatusBar(&isVisible);
555 if (SUCCEEDED(hr)) 434 if (SUCCEEDED(hr))
556 { 435 {
557 if (!isVisible) 436 if (!isVisible)
558 { 437 {
559 if (!settings->GetBool("statusbarasked", false)) 438 if (!settings->GetStatusBarAsked())
560 { 439 {
561 SHANDLE_PTR pBrowserHWnd; 440 SHANDLE_PTR pBrowserHWnd;
562 browser->get_HWND((SHANDLE_PTR*)&pBrowserHWnd); 441 browser->get_HWND((SHANDLE_PTR*)&pBrowserHWnd);
563 Dictionary* dictionary = Dictionary::GetInstance(); 442 Dictionary* dictionary = Dictionary::GetInstance();
564 settings->SetBool("statusbarasked", true); 443 settings->SetStatusBarAsked();
565 settings->Write();
566 444
567 HKEY pHkey; 445 HKEY pHkey;
568 HKEY pHkeySub; 446 HKEY pHkeySub;
569 LSTATUS regRes = 0; 447 LSTATUS regRes = 0;
570 regRes = RegOpenCurrentUser(KEY_WRITE, &pHkey); 448 regRes = RegOpenCurrentUser(KEY_WRITE, &pHkey);
571 449
572 // Do we have enough rights to enable a status bar? 450 // Do we have enough rights to enable a status bar?
573 if (regRes != 0) 451 if (regRes != 0)
574 { 452 {
575 // We use the tab window here and in the next few calls, since the b rowser window may still not be available 453 // We use the tab window here and in the next few calls, since the b rowser window may still not be available
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 // Create status pane 813 // Create status pane
936 if (bBHO) 814 if (bBHO)
937 { 815 {
938 if (!CreateStatusBarPane()) 816 if (!CreateStatusBarPane())
939 { 817 {
940 return false; 818 return false;
941 } 819 }
942 } 820 }
943 821
944 CPluginSettings* settings = CPluginSettings::GetInstance(); 822 CPluginSettings* settings = CPluginSettings::GetInstance();
945
946 // Create main thread
947 if (GetMainThreadHandle() == NULL && settings->IsMainProcess() && settings->Is MainUiThread())
948 {
949 DWORD id;
950 HANDLE handle = ::CreateThread(NULL, 0, MainThreadProc, (LPVOID)m_tab, CREAT E_SUSPENDED, &id);
951 if (handle == NULL)
952 {
953 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_THREAD, PLUGIN_ERROR_MAIN_T HREAD_CREATE_PROCESS, "Class::Thread - Failed to create main thread");
954 }
955
956 s_hMainThread = handle;
957
958 ::ResumeThread(handle);
959 }
960
961 return true; 823 return true;
962 } 824 }
963 825
964 bool CPluginClass::CreateStatusBarPane() 826 bool CPluginClass::CreateStatusBarPane()
965 { 827 {
966 DEBUG_GENERAL(L"Getting client"); 828 DEBUG_GENERAL(L"Getting client");
967 829
968 CPluginClient* client = CPluginClient::GetInstance(); 830 CPluginClient* client = CPluginClient::GetInstance();
969 831
970 DEBUG_GENERAL(L"Getting ieversion"); 832 DEBUG_GENERAL(L"Getting ieversion");
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 989
1128 ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData); 990 ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData);
1129 ::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData); 991 ::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData);
1130 992
1131 delete[] pData; 993 delete[] pData;
1132 } 994 }
1133 HDC hdc = GetWindowDC(m_hStatusBarWnd); 995 HDC hdc = GetWindowDC(m_hStatusBarWnd);
1134 SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0); 996 SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0);
1135 ReleaseDC(m_hStatusBarWnd, hdc); 997 ReleaseDC(m_hStatusBarWnd, hdc);
1136 return true; 998 return true;
1137 }///////////////////////////////////////////////////////////////////////////// 999 }
1138 // Implementation
1139 1000
1140 void CPluginClass::CloseTheme() 1001 void CPluginClass::CloseTheme()
1141 { 1002 {
1142 if (m_hTheme) 1003 if (m_hTheme)
1143 { 1004 {
1144 if (pfnClose) 1005 if (pfnClose)
1145 { 1006 {
1146 pfnClose(m_hTheme); 1007 pfnClose(m_hTheme);
1147 } 1008 }
1148 1009
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
1393 else 1254 else
1394 { 1255 {
1395 s_mimeFilter = NULL; 1256 s_mimeFilter = NULL;
1396 1257
1397 CPluginClientFactory::ReleaseMimeFilterClientInstance(); 1258 CPluginClientFactory::ReleaseMimeFilterClientInstance();
1398 } 1259 }
1399 } 1260 }
1400 s_criticalSectionLocal.Unlock(); 1261 s_criticalSectionLocal.Unlock();
1401 } 1262 }
1402 break; 1263 break;
1403 #ifndef ENTERPRISE
1404 case ID_SETTINGS:
1405 {
1406 url = CString(UserSettingsFileUrl().c_str());
1407 }
1408 break;
1409 #endif
1410 case ID_INVITEFRIENDS:
1411 {
1412 url = CPluginHttpRequest::GetStandardUrl(USERS_SCRIPT_INVITATION);
1413 navigationErrorId = PLUGIN_ERROR_NAVIGATION_INVITATION;
1414 }
1415 break;
1416
1417 case ID_FAQ:
1418 {
1419 url = CPluginHttpRequest::GetStandardUrl(USERS_SCRIPT_FAQ);
1420 navigationErrorId = PLUGIN_ERROR_NAVIGATION_FAQ;
1421 }
1422 break;
1423
1424 case ID_FEEDBACK:
1425 {
1426 CPluginHttpRequest httpRequest(USERS_SCRIPT_FEEDBACK);
1427
1428 httpRequest.AddPluginId();
1429 httpRequest.Add("reason", 0);
1430 httpRequest.Add(L"url", m_tab->GetDocumentUrl(), false);
1431
1432 url = httpRequest.GetUrl();
1433 navigationErrorId = PLUGIN_ERROR_NAVIGATION_FEEDBACK;
1434 }
1435 break;
1436
1437 case ID_ABOUT:
1438 {
1439 url = CPluginHttpRequest::GetStandardUrl(USERS_SCRIPT_ABOUT);
1440 navigationErrorId = PLUGIN_ERROR_NAVIGATION_ABOUT;
1441 }
1442 break;
1443
1444 default: 1264 default:
1445
1446 break; 1265 break;
1447 } 1266 }
1448 1267
1449 // Invalidate and redraw the control 1268 // Invalidate and redraw the control
1450 UpdateStatusBar(); 1269 UpdateStatusBar();
1451 1270
1452 CComQIPtr<IWebBrowser2> browser = GetBrowser(); 1271 CComQIPtr<IWebBrowser2> browser = GetBrowser();
1453 if (!url.IsEmpty() && browser) 1272 if (!url.IsEmpty() && browser)
1454 { 1273 {
1455 VARIANT vFlags; 1274 VARIANT vFlags;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1498 MENUITEMINFOW miiSep; 1317 MENUITEMINFOW miiSep;
1499 memset(&miiSep, 0, sizeof(MENUITEMINFO)); 1318 memset(&miiSep, 0, sizeof(MENUITEMINFO));
1500 miiSep.cbSize = sizeof(MENUITEMINFO); 1319 miiSep.cbSize = sizeof(MENUITEMINFO);
1501 miiSep.fMask = MIIM_TYPE | MIIM_FTYPE; 1320 miiSep.fMask = MIIM_TYPE | MIIM_FTYPE;
1502 miiSep.fType = MFT_SEPARATOR; 1321 miiSep.fType = MFT_SEPARATOR;
1503 1322
1504 CPluginClient* client = CPluginClient::GetInstance(); 1323 CPluginClient* client = CPluginClient::GetInstance();
1505 1324
1506 CPluginSettings* settings = CPluginSettings::GetInstance(); 1325 CPluginSettings* settings = CPluginSettings::GetInstance();
1507 1326
1508 settings->RefreshTab();
1509
1510 // Update settings
1511 m_tab->OnUpdateSettings(false);
1512
1513 #ifdef SUPPORT_WHITELIST 1327 #ifdef SUPPORT_WHITELIST
1514 { 1328 {
1515 // White list domain 1329 // White list domain
1516 ctext = dictionary->Lookup("menu", "disable-on-site"); 1330 ctext = dictionary->Lookup("menu", "disable-on-site");
1517 fmii.fMask = MIIM_STRING | MIIM_STATE; 1331 fmii.fMask = MIIM_STRING | MIIM_STATE;
1518 fmii.fState = MFS_DISABLED; 1332 fmii.fState = MFS_DISABLED;
1519 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); 1333 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str());
1520 fmii.cch = ctext.size(); 1334 fmii.cch = ctext.size();
1521 1335
1522 UINT index = WM_WHITELIST_DOMAIN; 1336 UINT index = WM_WHITELIST_DOMAIN;
1523 1337
1524 ::SetMenuItemInfoW(hMenu, ID_WHITELISTDOMAIN, FALSE, &fmii); 1338 ::SetMenuItemInfoW(hMenu, ID_WHITELISTDOMAIN, FALSE, &fmii);
1525 } 1339 }
1526 #else 1340 #else
1527 { 1341 {
1528 ::DeleteMenu(hMenu, ID_WHITELISTDOMAIN, FALSE); 1342 ::DeleteMenu(hMenu, ID_WHITELISTDOMAIN, FALSE);
1529 } 1343 }
1530 #endif // SUPPORT_WHITELIST 1344 #endif // SUPPORT_WHITELIST
1531 1345
1532 // Invite friends
1533 ctext = dictionary->Lookup("menu", "invite");
1534 fmii.fMask = MIIM_STATE | MIIM_STRING;
1535 fmii.fState = MFS_ENABLED;
1536 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str());
1537 fmii.cch = ctext.size();
1538 ::SetMenuItemInfoW(hMenu, ID_INVITEFRIENDS, FALSE, &fmii);
1539
1540 // FAQ
1541 ctext = dictionary->Lookup("menu", "faq");
1542 fmii.fMask = MIIM_STATE | MIIM_STRING;
1543 fmii.fState = MFS_ENABLED;
1544 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str());
1545 fmii.cch = ctext.size();
1546 ::SetMenuItemInfoW(hMenu, ID_FAQ, FALSE, &fmii);
1547
1548 // About
1549 ctext = dictionary->Lookup("menu", "about");
1550 fmii.fMask = MIIM_STATE | MIIM_STRING;
1551 fmii.fState = MFS_ENABLED;
1552 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str());
1553 fmii.cch = ctext.size();
1554 ::SetMenuItemInfoW(hMenu, ID_ABOUT, FALSE, &fmii);
1555
1556 // Feedback
1557 ctext = dictionary->Lookup("menu", "feedback");
1558 fmii.fMask = MIIM_STATE | MIIM_STRING;
1559 fmii.fState = MFS_ENABLED;
1560 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str());
1561 fmii.cch = ctext.size();
1562 ::SetMenuItemInfoW(hMenu, ID_FEEDBACK, FALSE, &fmii);
1563
1564 // Plugin enable 1346 // Plugin enable
1565 if (settings->GetPluginEnabled()) 1347 if (settings->GetPluginEnabled())
1566 { 1348 {
1567 ctext = dictionary->Lookup("menu", "disable"); 1349 ctext = dictionary->Lookup("menu", "disable");
1568 } 1350 }
1569 else 1351 else
1570 { 1352 {
1571 ctext = dictionary->Lookup("menu", "enable"); 1353 ctext = dictionary->Lookup("menu", "enable");
1572 } 1354 }
1573 fmii.fMask = MIIM_STATE | MIIM_STRING; 1355 fmii.fMask = MIIM_STATE | MIIM_STRING;
1574 fmii.fState = client ? MFS_ENABLED : MFS_DISABLED; 1356 fmii.fState = client ? MFS_ENABLED : MFS_DISABLED;
1575 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); 1357 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str());
1576 fmii.cch = ctext.size(); 1358 fmii.cch = ctext.size();
1577 ::SetMenuItemInfoW(hMenu, ID_PLUGIN_ENABLE, FALSE, &fmii); 1359 ::SetMenuItemInfoW(hMenu, ID_PLUGIN_ENABLE, FALSE, &fmii);
1578 1360
1579 // Settings 1361 // Settings
1580 #ifndef ENTERPRISE
1581 ctext = dictionary->Lookup("menu", "settings"); 1362 ctext = dictionary->Lookup("menu", "settings");
1582 fmii.fMask = MIIM_STATE | MIIM_STRING; 1363 fmii.fMask = MIIM_STATE | MIIM_STRING;
1583 fmii.fState = MFS_ENABLED; 1364 fmii.fState = MFS_ENABLED;
1584 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); 1365 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str());
1585 fmii.cch = ctext.size(); 1366 fmii.cch = ctext.size();
1586 ::SetMenuItemInfoW(hMenu, ID_SETTINGS, FALSE, &fmii); 1367 ::SetMenuItemInfoW(hMenu, ID_SETTINGS, FALSE, &fmii);
1587 #else
1588 RemoveMenu(hMenu, ID_SETTINGS, MF_BYCOMMAND);
1589 RemoveMenu(hMenu, 5, MF_BYPOSITION);
1590 #endif
1591 1368
1592 return true; 1369 return true;
1593 } 1370 }
1594 1371
1595 1372
1596 STDMETHODIMP CPluginClass::Exec(const GUID*, DWORD nCmdID, DWORD, VARIANTARG*, V ARIANTARG*) 1373 STDMETHODIMP CPluginClass::Exec(const GUID*, DWORD nCmdID, DWORD, VARIANTARG*, V ARIANTARG*)
1597 { 1374 {
1598 HWND hBrowserWnd = GetBrowserHWND(); 1375 HWND hBrowserWnd = GetBrowserHWND();
1599 if (!hBrowserWnd) 1376 if (!hBrowserWnd)
1600 { 1377 {
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
1945 if (FAILED(hr)) 1722 if (FAILED(hr))
1946 { 1723 {
1947 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION _SETTINGS, "Navigation::Failed") 1724 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION _SETTINGS, "Navigation::Failed")
1948 } 1725 }
1949 } 1726 }
1950 } 1727 }
1951 #endif 1728 #endif
1952 } 1729 }
1953 break; 1730 break;
1954 1731
1955 #ifndef ENTERPRISE
1956 1732
1957 case WM_LAUNCH_INFO: 1733 // First run page
1734 case WM_LAUNCH_INFO:
1958 { 1735 {
1959 // Set the status bar visible, if it isn't 1736 // Set the status bar visible, if it isn't
1960 // Otherwise the user won't see the icon the first time 1737 // Otherwise the user won't see the icon the first time
1961 1738
1962 if (wParam == 1) 1739 if (wParam == 1)
1963 { 1740 {
1964 // Redirect to welcome page 1741 // Redirect to welcome page
1965 VARIANT_BOOL isVisible; 1742 VARIANT_BOOL isVisible;
1966 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); 1743 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser();
1967 if (browser) 1744 if (browser)
(...skipping 21 matching lines...) Expand all
1989 } 1766 }
1990 } 1767 }
1991 } 1768 }
1992 else 1769 else
1993 { 1770 {
1994 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_STATUSBAR, "Class::Get statusbar state"); 1771 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_STATUSBAR, "Class::Get statusbar state");
1995 } 1772 }
1996 1773
1997 CPluginSettings* settings = CPluginSettings::GetInstance(); 1774 CPluginSettings* settings = CPluginSettings::GetInstance();
1998 1775
1999 CPluginHttpRequest httpRequest(USERS_SCRIPT_WELCOME); 1776 //TODO: Navigate to first run page here
2000 1777 /* hr = browser->Navigate(CComBSTR("FIRST_RUN_PAGE_URL"), NULL, NULL, NUL L, NULL);
2001 httpRequest.Add("errors", settings->GetErrorList());
2002
2003
2004 hr = browser->Navigate(CComBSTR(httpRequest.GetUrl() + "&src=" + DOWNL OAD_SOURCE), NULL, NULL, NULL, NULL);
2005 if (FAILED(hr)) 1778 if (FAILED(hr))
2006 { 1779 {
2007 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION _WELCOME, "Navigation::Welcome page failed") 1780 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION _WELCOME, "Navigation::Welcome page failed")
2008 } 1781 }
2009 1782 */
2010 // Update settings server side on next IE start, as they have possibly changed
2011 settings->ForceConfigurationUpdateOnStart();
2012 } 1783 }
2013 } 1784 }
2014 else 1785 else
2015 { 1786 {
2016 // Redirect to info page 1787 // Redirect to info page
2017 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); 1788 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser();
2018 if (browser) 1789 if (browser)
2019 { 1790 {
2020 CPluginHttpRequest httpRequest(USERS_SCRIPT_INFO);
2021
2022 httpRequest.Add("info", wParam);
2023
2024 VARIANT vFlags; 1791 VARIANT vFlags;
2025 vFlags.vt = VT_I4; 1792 vFlags.vt = VT_I4;
2026 vFlags.intVal = navOpenInNewTab; 1793 vFlags.intVal = navOpenInNewTab;
2027 1794
2028 HRESULT hr = browser->Navigate(CComBSTR(httpRequest.GetUrl()), &vFlags , NULL, NULL, NULL); 1795 // TODO: Navigate to info page here or remove this clause
1796 /* HRESULT hr = browser->Navigate(CComBSTR(INFO_PAGE_URL), &vFlags, NUL L, NULL, NULL);
2029 if (FAILED(hr)) 1797 if (FAILED(hr))
2030 { 1798 {
2031 vFlags.intVal = navOpenInNewWindow; 1799 vFlags.intVal = navOpenInNewWindow;
2032 1800
2033 hr = browser->Navigate(CComBSTR(httpRequest.GetUrl()), &vFlags, NULL , NULL, NULL); 1801 hr = browser->Navigate(CComBSTR(httpRequest.GetUrl()), &vFlags, NULL , NULL, NULL);
2034 if (FAILED(hr)) 1802 if (FAILED(hr))
2035 { 1803 {
2036 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATI ON_INFO, "Navigation::Info page failed") 1804 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATI ON_INFO, "Navigation::Info page failed")
2037 } 1805 }
2038 } 1806 }
1807 */
2039 } 1808 }
2040 } 1809 }
2041 } 1810 }
2042 break; 1811 break;
2043 #endif
2044 1812
2045 case WM_DESTROY: 1813 case WM_DESTROY:
2046 break; 1814 break;
2047 case SC_CLOSE: 1815 case SC_CLOSE:
2048 break; 1816 break;
2049 1817
2050 case WM_UPDATEUISTATE: 1818 case WM_UPDATEUISTATE:
2051 { 1819 {
2052 CPluginTab* tab = GetTab(::GetCurrentThreadId()); 1820 CPluginTab* tab = GetTab(::GetCurrentThreadId());
2053 if (tab) 1821 if (tab)
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
2192 } 1960 }
2193 } 1961 }
2194 } 1962 }
2195 1963
2196 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); 1964 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT);
2197 } 1965 }
2198 1966
2199 return hTabWnd; 1967 return hTabWnd;
2200 1968
2201 } 1969 }
OLDNEW
« no previous file with comments | « src/plugin/PluginClass.h ('k') | src/plugin/PluginClassThread.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld