1
0
mirror of https://github.com/valinet/ExplorerPatcher.git synced 2025-02-03 13:03:29 +01:00

GUI: Clear weather data signals status and waits more

This commit is contained in:
Valentin Radu 2022-02-14 02:44:57 +02:00
parent 874b82f49f
commit ce9b28a4e7

View File

@ -14,6 +14,65 @@ static BOOL(*ShouldAppsUseDarkMode)() = NULL;
DWORD dwTaskbarPosition = 3; DWORD dwTaskbarPosition = 3;
BOOL gui_bOldTaskbar = TRUE; BOOL gui_bOldTaskbar = TRUE;
int GUI_DeleteWeatherFolder()
{
WCHAR wszWorkFolder[MAX_PATH + 1];
ZeroMemory(wszWorkFolder, (MAX_PATH + 1) * sizeof(WCHAR));
SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, wszWorkFolder);
wcscat_s(wszWorkFolder, MAX_PATH, L"\\ExplorerPatcher\\ep_weather_host");
SHFILEOPSTRUCTW op;
ZeroMemory(&op, sizeof(SHFILEOPSTRUCTW));
op.wFunc = FO_DELETE;
op.pFrom = wszWorkFolder;
op.fFlags = FOF_NO_UI;
if (!SHFileOperationW(&op))
{
return IDOK;
}
else
{
if (op.fAnyOperationsAborted)
{
return IDCANCEL;
}
else
{
return IDABORT;
}
}
}
BOOL GUI_Internal_DeleteWeatherFolder(int* res)
{
if (!FindWindowW(_T(EPW_WEATHER_CLASSNAME), NULL))
{
if (!*res)
{
if (PleaseWait_UpdateTimeout(3000))
{
*res = IDRETRY;
}
else
{
*res = IDABORT;
return FALSE;
}
}
else if (*res == IDRETRY)
{
*res = GUI_DeleteWeatherFolder();
if (*res != IDRETRY)
{
return FALSE;
}
}
}
else
{
}
return TRUE;
}
void PlayHelpMessage(GUI* _this) void PlayHelpMessage(GUI* _this)
{ {
unsigned int max_section = 0; unsigned int max_section = 0;
@ -1860,34 +1919,27 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
{ {
DWORD dwData = 0, dwVal = 0, dwSize = sizeof(DWORD); DWORD dwData = 0, dwVal = 0, dwSize = sizeof(DWORD);
GUI_Internal_RegQueryValueExW(NULL, L"Virtualized_" _T(EP_CLSID) L"_PeopleBand", NULL, NULL, &dwData, &dwSize); GUI_Internal_RegQueryValueExW(NULL, L"Virtualized_" _T(EP_CLSID) L"_PeopleBand", NULL, NULL, &dwData, &dwSize);
int res = 0;
if (dwData) if (dwData)
{ {
HWND hWnd = FindWindowW(_T(EPW_WEATHER_CLASSNAME), NULL);
GUI_Internal_RegSetValueExW(NULL, L"Virtualized_" _T(EP_CLSID) L"_PeopleBand", 0, 0, &dwVal, sizeof(DWORD)); GUI_Internal_RegSetValueExW(NULL, L"Virtualized_" _T(EP_CLSID) L"_PeopleBand", 0, 0, &dwVal, sizeof(DWORD));
while (hWnd) PleaseWaitTimeout = 100;
PleaseWaitCallbackData = &res;
PleaseWaitCallbackFunc = GUI_Internal_DeleteWeatherFolder;
PleaseWaitHook = SetWindowsHookExW(WH_CALLWNDPROC, PleaseWait_HookProc, NULL, GetCurrentThreadId());
MessageBoxW(hwnd, L"Please wait...", _T(PRODUCT_NAME), 0);
}
else
{ {
Sleep(100); res = GUI_DeleteWeatherFolder();
hWnd = FindWindowW(_T(EPW_WEATHER_CLASSNAME), NULL);
} }
Sleep(100); if (res == IDOK)
}
WCHAR wszWorkFolder[MAX_PATH + 1];
ZeroMemory(wszWorkFolder, (MAX_PATH + 1) * sizeof(WCHAR));
SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, wszWorkFolder);
wcscat_s(wszWorkFolder, MAX_PATH, L"\\ExplorerPatcher\\ep_weather_host");
SHFILEOPSTRUCTW op;
ZeroMemory(&op, sizeof(SHFILEOPSTRUCTW));
op.hwnd = hwnd;
op.wFunc = FO_DELETE;
op.pFrom = wszWorkFolder;
op.fFlags = FOF_NO_UI;
if (!SHFileOperationW(&op))
{ {
MessageBoxW(hwnd, L"Weather widget data cleared successfully.", _T(PRODUCT_NAME), MB_ICONINFORMATION); MessageBoxW(hwnd, L"Weather widget data cleared successfully.", _T(PRODUCT_NAME), MB_ICONINFORMATION);
} }
else else
{ {
if (!op.fAnyOperationsAborted) if (res == IDABORT)
{ {
MessageBoxW(hwnd, L"An error has occured while clearing the data.", _T(PRODUCT_NAME), MB_ICONERROR); MessageBoxW(hwnd, L"An error has occured while clearing the data.", _T(PRODUCT_NAME), MB_ICONERROR);
} }