mirror of
https://github.com/reactos/reactos.git
synced 2024-08-12 14:16:30 +00:00
- Use Ged's time updating code from ncpa module
- Periodically refresh timer for status dialog - Make property sheet modal svn path=/trunk/; revision=36292
This commit is contained in:
parent
9a4bf1ea9c
commit
58d5c68b74
|
@ -83,5 +83,6 @@ BEGIN
|
||||||
IDS_FORMAT_KBIT "%u KBit/s"
|
IDS_FORMAT_KBIT "%u KBit/s"
|
||||||
IDS_FORMAT_MBIT "%u MBit/s"
|
IDS_FORMAT_MBIT "%u MBit/s"
|
||||||
IDS_FORMAT_GBIT "%u GBit/s"
|
IDS_FORMAT_GBIT "%u GBit/s"
|
||||||
|
IDS_DURATION_DAY "%d Tag %s"
|
||||||
|
IDS_DURATION_DAYS "%d Tage %s"
|
||||||
END
|
END
|
||||||
|
|
|
@ -25,37 +25,57 @@ typedef struct
|
||||||
{
|
{
|
||||||
INetConnection *pNet;
|
INetConnection *pNet;
|
||||||
HWND hwndDlg;
|
HWND hwndDlg;
|
||||||
|
DWORD dwAdapterIndex;
|
||||||
|
UINT_PTR nIDEvent;
|
||||||
DWORD dwInOctets;
|
DWORD dwInOctets;
|
||||||
DWORD dwOutOctets;
|
DWORD dwOutOctets;
|
||||||
}LANSTATUSUI_CONTEXT;
|
}LANSTATUSUI_CONTEXT;
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
UpdateLanStatusUIDlg(HWND hwndDlg, MIB_IFROW * IfEntry)
|
UpdateLanStatusUIDlg(HWND hwndDlg, LANSTATUSUI_CONTEXT * pContext)
|
||||||
{
|
{
|
||||||
WCHAR szFormat[MAX_PATH] = {0};
|
WCHAR szFormat[MAX_PATH] = {0};
|
||||||
WCHAR szBuffer[MAX_PATH] = {0};
|
WCHAR szBuffer[MAX_PATH] = {0};
|
||||||
|
MIB_IFROW IfEntry;
|
||||||
|
SYSTEMTIME TimeConnected;
|
||||||
|
DWORD DurationSeconds;
|
||||||
|
WCHAR Buffer[100];
|
||||||
|
WCHAR DayBuffer[30];
|
||||||
|
WCHAR LocBuffer[50];
|
||||||
|
#if 0
|
||||||
|
ULONGLONG Ticks;
|
||||||
|
#else
|
||||||
|
DWORD Ticks;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (IfEntry->dwSpeed < 1000)
|
ZeroMemory(&IfEntry, sizeof(IfEntry));
|
||||||
|
IfEntry.dwIndex = pContext->dwAdapterIndex;
|
||||||
|
if(GetIfEntry(&IfEntry) != NO_ERROR)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IfEntry.dwSpeed < 1000)
|
||||||
{
|
{
|
||||||
if (LoadStringW(netshell_hInstance, IDS_FORMAT_BIT, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
|
if (LoadStringW(netshell_hInstance, IDS_FORMAT_BIT, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
|
||||||
{
|
{
|
||||||
swprintf(szBuffer, szFormat, IfEntry->dwSpeed);
|
swprintf(szBuffer, szFormat, IfEntry.dwSpeed);
|
||||||
SendDlgItemMessageW(hwndDlg, IDC_SPEED, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
SendDlgItemMessageW(hwndDlg, IDC_SPEED, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (IfEntry->dwSpeed < 1000000)
|
else if (IfEntry.dwSpeed < 1000000)
|
||||||
{
|
{
|
||||||
if (LoadStringW(netshell_hInstance, IDS_FORMAT_KBIT, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
|
if (LoadStringW(netshell_hInstance, IDS_FORMAT_KBIT, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
|
||||||
{
|
{
|
||||||
swprintf(szBuffer, szFormat, IfEntry->dwSpeed/1000);
|
swprintf(szBuffer, szFormat, IfEntry.dwSpeed/1000);
|
||||||
SendDlgItemMessageW(hwndDlg, IDC_SPEED, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
SendDlgItemMessageW(hwndDlg, IDC_SPEED, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (IfEntry->dwSpeed < 1000000000)
|
else if (IfEntry.dwSpeed < 1000000000)
|
||||||
{
|
{
|
||||||
if (LoadStringW(netshell_hInstance, IDS_FORMAT_MBIT, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
|
if (LoadStringW(netshell_hInstance, IDS_FORMAT_MBIT, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
|
||||||
{
|
{
|
||||||
swprintf(szBuffer, szFormat, IfEntry->dwSpeed/1000000);
|
swprintf(szBuffer, szFormat, IfEntry.dwSpeed/1000000);
|
||||||
SendDlgItemMessageW(hwndDlg, IDC_SPEED, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
SendDlgItemMessageW(hwndDlg, IDC_SPEED, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,37 +83,71 @@ UpdateLanStatusUIDlg(HWND hwndDlg, MIB_IFROW * IfEntry)
|
||||||
{
|
{
|
||||||
if (LoadStringW(netshell_hInstance, IDS_FORMAT_KBIT, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
|
if (LoadStringW(netshell_hInstance, IDS_FORMAT_KBIT, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
|
||||||
{
|
{
|
||||||
swprintf(szBuffer, szFormat, IfEntry->dwSpeed/1000000000);
|
swprintf(szBuffer, szFormat, IfEntry.dwSpeed/1000000000);
|
||||||
SendDlgItemMessageW(hwndDlg, IDC_SPEED, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
SendDlgItemMessageW(hwndDlg, IDC_SPEED, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StrFormatByteSizeW(IfEntry->dwInOctets, szBuffer, sizeof(szFormat)/sizeof(WCHAR)))
|
if (StrFormatByteSizeW(IfEntry.dwInOctets, szBuffer, sizeof(szFormat)/sizeof(WCHAR)))
|
||||||
{
|
{
|
||||||
SendDlgItemMessageW(hwndDlg, IDC_RECEIVED, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
SendDlgItemMessageW(hwndDlg, IDC_RECEIVED, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StrFormatByteSizeW(IfEntry->dwOutOctets, szBuffer, sizeof(szFormat)/sizeof(WCHAR)))
|
if (StrFormatByteSizeW(IfEntry.dwOutOctets, szBuffer, sizeof(szFormat)/sizeof(WCHAR)))
|
||||||
{
|
{
|
||||||
SendDlgItemMessageW(hwndDlg, IDC_SEND, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
SendDlgItemMessageW(hwndDlg, IDC_SEND, WM_SETTEXT, 0, (LPARAM)szBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
//FIXME
|
//FIXME
|
||||||
//set duration
|
//set duration
|
||||||
|
#if 0
|
||||||
|
Ticks = GetTickCount64();
|
||||||
|
#else
|
||||||
|
Ticks = GetTickCount();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DurationSeconds = Ticks / 1000;
|
||||||
|
TimeConnected.wSecond = (DurationSeconds % 60);
|
||||||
|
TimeConnected.wMinute = (DurationSeconds / 60) % 60;
|
||||||
|
TimeConnected.wHour = (DurationSeconds / (60 * 60)) % 24;
|
||||||
|
TimeConnected.wDay = DurationSeconds / (60 * 60 * 24);
|
||||||
|
|
||||||
|
if (!GetTimeFormatW(LOCALE_USER_DEFAULT, 0, &TimeConnected, L"HH':'mm':'ss", LocBuffer, sizeof(LocBuffer) / sizeof(LocBuffer[0])))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!TimeConnected.wDay)
|
||||||
|
{
|
||||||
|
SendDlgItemMessageW(hwndDlg, IDC_DURATION, WM_SETTEXT, 0, (LPARAM)LocBuffer);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (TimeConnected.wDay == 1)
|
||||||
|
{
|
||||||
|
if (!LoadStringW(netshell_hInstance, IDS_DURATION_DAY, DayBuffer, sizeof(DayBuffer) / sizeof(DayBuffer[0])))
|
||||||
|
DayBuffer[0] = L'\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!LoadStringW(netshell_hInstance, IDS_DURATION_DAYS, DayBuffer, sizeof(DayBuffer) / sizeof(DayBuffer[0])))
|
||||||
|
DayBuffer[0] = L'\0';
|
||||||
|
}
|
||||||
|
swprintf(Buffer, DayBuffer, TimeConnected.wDay, LocBuffer);
|
||||||
|
SendDlgItemMessageW(hwndDlg, IDC_DURATION, WM_SETTEXT, 0, (LPARAM)Buffer);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
InitializeLANStatusUiDlg(HWND hwndDlg, INetConnection * pNet)
|
InitializeLANStatusUiDlg(HWND hwndDlg, LANSTATUSUI_CONTEXT * pContext)
|
||||||
{
|
{
|
||||||
WCHAR szBuffer[MAX_PATH] = {0};
|
WCHAR szBuffer[MAX_PATH] = {0};
|
||||||
NETCON_PROPERTIES * pProperties = NULL;
|
NETCON_PROPERTIES * pProperties = NULL;
|
||||||
MIB_IFROW IfEntry;
|
|
||||||
DWORD dwSize, dwAdapterIndex, dwResult;
|
DWORD dwSize, dwAdapterIndex, dwResult;
|
||||||
LPOLESTR pStr;
|
LPOLESTR pStr;
|
||||||
IP_ADAPTER_INFO * pAdapterInfo;
|
IP_ADAPTER_INFO * pAdapterInfo;
|
||||||
|
|
||||||
if (INetConnection_GetProperties(pNet, &pProperties) != NOERROR)
|
if (INetConnection_GetProperties(pContext->pNet, &pProperties) != NOERROR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (pProperties->Status == NCS_DISCONNECTED)
|
if (pProperties->Status == NCS_DISCONNECTED)
|
||||||
|
@ -145,18 +199,11 @@ InitializeLANStatusUiDlg(HWND hwndDlg, INetConnection * pNet)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CoTaskMemFree(pStr);
|
CoTaskMemFree(pStr);
|
||||||
|
pContext->dwAdapterIndex = dwAdapterIndex;
|
||||||
|
|
||||||
/* get detailed adapter info */
|
/* update adapter info */
|
||||||
ZeroMemory(&IfEntry, sizeof(IfEntry));
|
UpdateLanStatusUIDlg(hwndDlg, pContext);
|
||||||
IfEntry.dwIndex = dwAdapterIndex;
|
pContext->nIDEvent = SetTimer(hwndDlg, 0xFABC, 1000, NULL);
|
||||||
if(GetIfEntry(&IfEntry) != NO_ERROR)
|
|
||||||
{
|
|
||||||
CoTaskMemFree(pAdapterInfo);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateLanStatusUIDlg(hwndDlg, &IfEntry);
|
|
||||||
|
|
||||||
CoTaskMemFree(pAdapterInfo);
|
CoTaskMemFree(pAdapterInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +225,8 @@ LANStatusUiDlg(
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
page = (PROPSHEETPAGE*)lParam;
|
page = (PROPSHEETPAGE*)lParam;
|
||||||
pContext = (LANSTATUSUI_CONTEXT*)page->lParam;
|
pContext = (LANSTATUSUI_CONTEXT*)page->lParam;
|
||||||
InitializeLANStatusUiDlg(hwndDlg, pContext->pNet);
|
pContext->hwndDlg = GetParent(hwndDlg);
|
||||||
|
InitializeLANStatusUiDlg(hwndDlg, pContext);
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pContext);
|
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pContext);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
|
@ -203,11 +251,19 @@ LANStatusUiDlg(
|
||||||
if (lppsn->hdr.code == PSN_APPLY || lppsn->hdr.code == PSN_RESET)
|
if (lppsn->hdr.code == PSN_APPLY || lppsn->hdr.code == PSN_RESET)
|
||||||
{
|
{
|
||||||
pContext = (LANSTATUSUI_CONTEXT*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
pContext = (LANSTATUSUI_CONTEXT*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||||
DestroyWindow(pContext->hwndDlg);
|
KillTimer(hwndDlg, pContext->nIDEvent);
|
||||||
|
SetWindowLong(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
|
||||||
pContext->hwndDlg = NULL;
|
pContext->hwndDlg = NULL;
|
||||||
return PSNRET_NOERROR;
|
return PSNRET_NOERROR;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case WM_TIMER:
|
||||||
|
pContext = (LANSTATUSUI_CONTEXT*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||||
|
if (wParam == (WPARAM)pContext->nIDEvent)
|
||||||
|
{
|
||||||
|
UpdateLanStatusUIDlg(hwndDlg, pContext);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +281,7 @@ ShowStatusPropertyDialog(
|
||||||
ZeroMemory(&pinfo, sizeof(PROPSHEETHEADERW));
|
ZeroMemory(&pinfo, sizeof(PROPSHEETHEADERW));
|
||||||
ZeroMemory(hppages, sizeof(hppages));
|
ZeroMemory(hppages, sizeof(hppages));
|
||||||
pinfo.dwSize = sizeof(PROPSHEETHEADERW);
|
pinfo.dwSize = sizeof(PROPSHEETHEADERW);
|
||||||
pinfo.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE | PSH_NOAPPLYNOW | PSH_MODELESS;
|
pinfo.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE | PSH_NOAPPLYNOW;
|
||||||
pinfo.u3.phpage = hppages;
|
pinfo.u3.phpage = hppages;
|
||||||
pinfo.hwndParent = hwndDlg;
|
pinfo.hwndParent = hwndDlg;
|
||||||
|
|
||||||
|
|
|
@ -68,4 +68,6 @@
|
||||||
#define IDS_FORMAT_MBIT 10201
|
#define IDS_FORMAT_MBIT 10201
|
||||||
#define IDS_FORMAT_KBIT 10202
|
#define IDS_FORMAT_KBIT 10202
|
||||||
#define IDS_FORMAT_GBIT 10203
|
#define IDS_FORMAT_GBIT 10203
|
||||||
|
#define IDS_DURATION_DAY 10204
|
||||||
|
#define IDS_DURATION_DAYS 10205
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue