| Left: | ||
| Right: |
| OLD | NEW |
|---|---|
| 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" |
| (...skipping 980 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 991 INT *pData = new INT[nPartCount]; | 991 INT *pData = new INT[nPartCount]; |
| 992 | 992 |
| 993 ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData); | 993 ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData); |
| 994 ::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData); | 994 ::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData); |
| 995 | 995 |
| 996 delete[] pData; | 996 delete[] pData; |
| 997 } | 997 } |
| 998 HDC hdc = GetWindowDC(m_hStatusBarWnd); | 998 HDC hdc = GetWindowDC(m_hStatusBarWnd); |
| 999 SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0); | 999 SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0); |
| 1000 ReleaseDC(m_hStatusBarWnd, hdc); | 1000 ReleaseDC(m_hStatusBarWnd, hdc); |
| 1001 | |
| 1002 if (CPluginClient::GetInstance()->GetIsFirstRun()) | |
|
Wladimir Palant
2013/07/11 11:58:10
Is CreateStatusBarPane() really the best place for
| |
| 1003 { | |
| 1004 CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)CPluginClass::FirstRunThrea d, NULL, NULL, NULL); | |
| 1005 } | |
| 1006 | |
| 1001 return true; | 1007 return true; |
| 1002 } | 1008 } |
| 1003 | 1009 |
| 1010 void CPluginClass::FirstRunThread() | |
| 1011 { | |
| 1012 // IE may still be not ready to navigate. Try until it is. | |
| 1013 VARIANT_BOOL isBusy = VARIANT_FALSE; | |
| 1014 while (GetAsyncBrowser()->get_Busy(&isBusy) == S_OK && isBusy != VARIANT_FALSE ) | |
| 1015 { | |
| 1016 Sleep(100); | |
| 1017 } | |
| 1018 VARIANT vFlags; | |
| 1019 vFlags.vt = VT_I4; | |
| 1020 vFlags.intVal = navOpenInNewTab; | |
| 1021 | |
| 1022 READYSTATE readyState; | |
| 1023 HRESULT hr; | |
| 1024 while ((hr = GetAsyncBrowser()->get_ReadyState(&readyState) == S_OK) && (ready State <= READYSTATE_LOADED)) | |
|
Wladimir Palant
2013/07/11 11:58:10
We are opening in a new tab, why do we care about
| |
| 1025 { | |
| 1026 Sleep(100); | |
| 1027 } | |
| 1028 CComBSTR bTest = CComBSTR(UserSettingsFirstRunPageUrl().c_str()); | |
| 1029 | |
| 1030 //Try 10 times, or until successful | |
| 1031 int numberOfAttempts = 0; | |
| 1032 while ((hr != S_OK) && (numberOfAttempts < 10)) | |
| 1033 { | |
| 1034 hr = GetAsyncBrowser()->Navigate(bTest, &vFlags, NULL, NULL, NULL); | |
| 1035 if (FAILED(hr)) | |
| 1036 { | |
| 1037 vFlags.intVal = navOpenInNewWindow; | |
| 1038 | |
| 1039 hr = GetAsyncBrowser()->Navigate(bTest, &vFlags, NULL, NULL, NULL); | |
| 1040 if (FAILED(hr)) | |
| 1041 { | |
| 1042 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION_SET TINGS, "Navigation::Failed") | |
|
Wladimir Palant
2013/07/11 11:58:10
This should probably be PLUGIN_ERROR_NAVIGATION_WE
| |
| 1043 } | |
| 1044 } | |
| 1045 Sleep(100); | |
| 1046 } | |
|
Wladimir Palant
2013/07/11 11:58:10
Does it really have to be that complicated? No oth
Oleksandr
2013/07/20 20:22:30
This turned out to be unnecessary after all. I've
| |
| 1047 if (FAILED(hr)) | |
| 1048 { | |
| 1049 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION_WELCOME , "Navigation::Welcome page failed") | |
| 1050 } | |
| 1051 } | |
| 1004 void CPluginClass::CloseTheme() | 1052 void CPluginClass::CloseTheme() |
| 1005 { | 1053 { |
| 1006 if (m_hTheme) | 1054 if (m_hTheme) |
| 1007 { | 1055 { |
| 1008 if (pfnClose) | 1056 if (pfnClose) |
| 1009 { | 1057 { |
| 1010 pfnClose(m_hTheme); | 1058 pfnClose(m_hTheme); |
| 1011 } | 1059 } |
| 1012 | 1060 |
| 1013 m_hTheme = NULL; | 1061 m_hTheme = NULL; |
| (...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1724 hr = browser->Navigate(BString(UserSettingsFileUrl()), &vFlags, NULL, NULL, NULL); | 1772 hr = browser->Navigate(BString(UserSettingsFileUrl()), &vFlags, NULL, NULL, NULL); |
| 1725 if (FAILED(hr)) | 1773 if (FAILED(hr)) |
| 1726 { | 1774 { |
| 1727 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION _SETTINGS, "Navigation::Failed") | 1775 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION _SETTINGS, "Navigation::Failed") |
| 1728 } | 1776 } |
| 1729 } | 1777 } |
| 1730 } | 1778 } |
| 1731 #endif | 1779 #endif |
| 1732 } | 1780 } |
| 1733 break; | 1781 break; |
| 1734 | |
| 1735 | |
| 1736 // First run page | |
| 1737 case WM_LAUNCH_INFO: | |
|
Wladimir Palant
2013/07/11 11:58:10
You probably want to remove the definition of that
| |
| 1738 { | |
| 1739 // Set the status bar visible, if it isn't | |
| 1740 // Otherwise the user won't see the icon the first time | |
| 1741 | |
| 1742 if (wParam == 1) | |
| 1743 { | |
| 1744 // Redirect to welcome page | |
| 1745 VARIANT_BOOL isVisible; | |
| 1746 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); | |
| 1747 if (browser) | |
| 1748 { | |
| 1749 HRESULT hr = S_OK; | |
| 1750 | |
| 1751 hr = browser->get_StatusBar(&isVisible); | |
| 1752 if (SUCCEEDED(hr)) | |
| 1753 { | |
| 1754 if (!isVisible) | |
| 1755 { | |
| 1756 Dictionary* dictionary = Dictionary::GetInstance(); | |
| 1757 | |
| 1758 LRESULT res = MessageBox(NULL, | |
| 1759 dictionary->Lookup("status-bar", "question").c_str(), | |
| 1760 dictionary->Lookup("status-bar", "title").c_str(), | |
| 1761 MB_YESNO); | |
| 1762 if (res == IDYES) | |
| 1763 { | |
| 1764 hr = browser->put_StatusBar(TRUE); | |
| 1765 if (FAILED(hr)) | |
| 1766 { | |
| 1767 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_PUT_STATU SBAR, "Class::Enable statusbar"); | |
| 1768 } | |
| 1769 } | |
| 1770 } | |
| 1771 } | |
| 1772 else | |
| 1773 { | |
| 1774 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_STATUSBAR, "Class::Get statusbar state"); | |
| 1775 } | |
| 1776 | |
| 1777 CPluginSettings* settings = CPluginSettings::GetInstance(); | |
| 1778 | |
| 1779 //TODO: Navigate to first run page here | |
| 1780 /* hr = browser->Navigate(CComBSTR("FIRST_RUN_PAGE_URL"), NULL, NULL, NUL L, NULL); | |
| 1781 if (FAILED(hr)) | |
| 1782 { | |
| 1783 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION _WELCOME, "Navigation::Welcome page failed") | |
| 1784 } | |
| 1785 */ | |
| 1786 } | |
| 1787 } | |
| 1788 else | |
| 1789 { | |
| 1790 // Redirect to info page | |
| 1791 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); | |
| 1792 if (browser) | |
| 1793 { | |
| 1794 VARIANT vFlags; | |
| 1795 vFlags.vt = VT_I4; | |
| 1796 vFlags.intVal = navOpenInNewTab; | |
| 1797 | |
| 1798 // TODO: Navigate to info page here or remove this clause | |
| 1799 /* HRESULT hr = browser->Navigate(CComBSTR(INFO_PAGE_URL), &vFlags, NUL L, NULL, NULL); | |
| 1800 if (FAILED(hr)) | |
| 1801 { | |
| 1802 vFlags.intVal = navOpenInNewWindow; | |
| 1803 | |
| 1804 hr = browser->Navigate(CComBSTR(httpRequest.GetUrl()), &vFlags, NULL , NULL, NULL); | |
| 1805 if (FAILED(hr)) | |
| 1806 { | |
| 1807 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATI ON_INFO, "Navigation::Info page failed") | |
| 1808 } | |
| 1809 } | |
| 1810 */ | |
| 1811 } | |
| 1812 } | |
| 1813 } | |
| 1814 break; | |
| 1815 | |
| 1816 case WM_DESTROY: | 1782 case WM_DESTROY: |
| 1817 break; | 1783 break; |
| 1818 case SC_CLOSE: | 1784 case SC_CLOSE: |
| 1819 break; | 1785 break; |
| 1820 | 1786 |
| 1821 case WM_UPDATEUISTATE: | 1787 case WM_UPDATEUISTATE: |
| 1822 { | 1788 { |
| 1823 CPluginTab* tab = GetTab(::GetCurrentThreadId()); | 1789 CPluginTab* tab = GetTab(::GetCurrentThreadId()); |
| 1824 if (tab) | 1790 if (tab) |
| 1825 { | 1791 { |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1963 } | 1929 } |
| 1964 } | 1930 } |
| 1965 } | 1931 } |
| 1966 | 1932 |
| 1967 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); | 1933 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); |
| 1968 } | 1934 } |
| 1969 | 1935 |
| 1970 return hTabWnd; | 1936 return hTabWnd; |
| 1971 | 1937 |
| 1972 } | 1938 } |
| OLD | NEW |