summaryrefslogtreecommitdiff
path: root/protocols/Weather/src/weather_userinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Weather/src/weather_userinfo.cpp')
-rw-r--r--protocols/Weather/src/weather_userinfo.cpp409
1 files changed, 215 insertions, 194 deletions
diff --git a/protocols/Weather/src/weather_userinfo.cpp b/protocols/Weather/src/weather_userinfo.cpp
index ecee919ce5..1207d01b4a 100644
--- a/protocols/Weather/src/weather_userinfo.cpp
+++ b/protocols/Weather/src/weather_userinfo.cpp
@@ -27,232 +27,252 @@ information
#include "stdafx.h"
-//============ BRIEF INFORMATION ============
-//
-static int BriefDlgResizer(HWND, LPARAM, UTILRESIZECONTROL *urc)
-{
- switch (urc->wId) {
- case IDC_HEADERBAR:
- return RD_ANCHORX_LEFT | RD_ANCHORY_TOP | RD_ANCHORX_WIDTH;
-
- case IDC_MTEXT:
- case IDC_DATALIST:
- return RD_ANCHORX_LEFT | RD_ANCHORY_TOP | RD_ANCHORX_WIDTH | RD_ANCHORY_HEIGHT;
+/////////////////////////////////////////////////////////////////////////////////////////
+// dialog for more data in the user info window
- case IDC_MUPDATE:
- return RD_ANCHORX_LEFT | RD_ANCHORY_BOTTOM;
+static unsigned tabstops = 48;
- case IDC_MTOGGLE:
- case IDC_MWEBPAGE:
- case IDCANCEL:
- return RD_ANCHORX_RIGHT | RD_ANCHORY_BOTTOM;
- }
- return RD_ANCHORX_LEFT | RD_ANCHORY_TOP;
+static int GetWeatherDataFromDB(const char *szSetting, void *lparam)
+{
+ auto *pList = (OBJLIST<char>*)lparam;
+ pList->insert(newStr(szSetting));
+ return 0;
}
-// set the title of the dialog and on the which rectangle
-// also load brief info into message box
-static void LoadBriefInfoText(HWND hwndDlg, MCONTACT hContact)
+class CBriefInfoDlg : public CWeatherDlgBase
{
- wchar_t str[4096];
+ MCONTACT hContact;
+ wchar_t m_buf[4098];
+ int iOldItem = -1;
- // load weather information from the contact into the WEATHERINFO struct
- WEATHERINFO winfo = LoadWeatherInfo(hContact);
- // check if data exist. If not, display error message box
- if (!g_plugin.getByte(hContact, "IsUpdated"))
- SetDlgItemTextW(hwndDlg, IDC_MTEXT, TranslateT("No information available.\r\nPlease update weather condition first."));
- else {
- // set the display text and show the message box
- GetDisplay(&winfo, GetTextValue('B'), str);
- SetDlgItemTextW(hwndDlg, IDC_MTEXT, str);
- }
+ UI_MESSAGE_MAP(CBriefInfoDlg, CWeatherDlgBase);
+ UI_MESSAGE(WM_UPDATEDATA, OnUpdate);
+ UI_MESSAGE_MAP_END();
- GetDisplay(&winfo, L"%c, %t", str);
- SetWindowTextW(hwndDlg, winfo.city);
- SetDlgItemTextW(hwndDlg, IDC_HEADERBAR, str);
-}
+ CTimer m_timer;
+ CCtrlButton btnUpdate, btnWebpage, btnToggle;
+ CCtrlListView m_list;
-// dialog process for more data in the user info window
-// lParam = contact handle
-static INT_PTR CALLBACK DlgProcMoreData(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- static const unsigned tabstops = 48;
- MCONTACT hContact = (MCONTACT)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
+public:
+ CBriefInfoDlg(CWeatherProto *ppro, MCONTACT _1) :
+ CWeatherDlgBase(ppro, IDD_BRIEF),
+ hContact(_1),
+ m_list(this, IDC_DATALIST),
+ m_timer(this, 1),
+ btnToggle(this, IDC_MTOGGLE),
+ btnUpdate(this, IDC_MUPDATE),
+ btnWebpage(this, IDC_MWEBPAGE)
+ {
+ SetMinSize(350, 300);
- switch (msg) {
- case WM_INITDIALOG:
- // save the contact handle for later use
- hContact = lParam;
- SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)hContact);
+ m_list.OnHotTrack = Callback(this, &CBriefInfoDlg::onList_Track);
- SendDlgItemMessage(hwndDlg, IDC_MTEXT, EM_AUTOURLDETECT, (WPARAM)TRUE, 0);
- SendDlgItemMessage(hwndDlg, IDC_MTEXT, EM_SETEVENTMASK, 0, ENM_LINK);
- SendDlgItemMessage(hwndDlg, IDC_MTEXT, EM_SETMARGINS, EC_LEFTMARGIN, 5);
- SendDlgItemMessage(hwndDlg, IDC_MTEXT, EM_SETTABSTOPS, 1, (LPARAM)&tabstops);
+ m_timer.OnEvent = Callback(this, &CBriefInfoDlg::onTimer);
+
+ btnToggle.OnClick = Callback(this, &CBriefInfoDlg::onClick_Toggle);
+ btnUpdate.OnClick = Callback(this, &CBriefInfoDlg::onClick_Update);
+ btnWebpage.OnClick = Callback(this, &CBriefInfoDlg::onClick_Webpage);
+ }
+
+ bool OnInitDialog() override
+ {
+ SendDlgItemMessage(m_hwnd, IDC_MTEXT, EM_AUTOURLDETECT, (WPARAM)TRUE, 0);
+ SendDlgItemMessage(m_hwnd, IDC_MTEXT, EM_SETEVENTMASK, 0, ENM_LINK);
+ SendDlgItemMessage(m_hwnd, IDC_MTEXT, EM_SETMARGINS, EC_LEFTMARGIN, 5);
+ SendDlgItemMessage(m_hwnd, IDC_MTEXT, EM_SETTABSTOPS, 1, (LPARAM)&tabstops);
// get the list to display
{
- LV_COLUMN lvc = {};
- HWND hList = GetDlgItem(hwndDlg, IDC_DATALIST);
RECT aRect = {};
- GetClientRect(hList, &aRect);
+ GetClientRect(m_list.GetHwnd(), &aRect);
// managing styles
- lvc.mask = LVCF_WIDTH | LVCF_TEXT;
- ListView_SetExtendedListViewStyleEx(hList,
- LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP,
- LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP);
+ DWORD dwStyle = LVS_EX_FULLROWSELECT;
+ m_list.SetExtendedListViewStyleEx(dwStyle, dwStyle);
// inserting columns
+ LV_COLUMN lvc = {};
+ lvc.mask = LVCF_WIDTH | LVCF_TEXT;
+
lvc.cx = LIST_COLUMN;
lvc.pszText = TranslateT("Variable");
- ListView_InsertColumn(hList, 0, &lvc);
+ m_list.InsertColumn(0, &lvc);
lvc.cx = aRect.right - LIST_COLUMN - GetSystemMetrics(SM_CXVSCROLL) - 3;
lvc.pszText = TranslateT("Information");
- ListView_InsertColumn(hList, 1, &lvc);
+ m_list.InsertColumn(1, &lvc);
- // inserting data
- SendMessage(hwndDlg, WM_UPDATEDATA, 0, 0);
+ // insert data
+ OnUpdate();
}
- TranslateDialogDefault(hwndDlg);
// prevent dups of the window
- WindowList_Add(hDataWindowList, hwndDlg, hContact);
+ WindowList_Add(hDataWindowList, m_hwnd, hContact);
// restore window position
- Utils_RestoreWindowPositionNoMove(hwndDlg, NULL, MODULENAME, "BriefInfo_");
- return TRUE;
+ Utils_RestoreWindowPositionNoMove(m_hwnd, NULL, MODULENAME, "BriefInfo_");
+ return true;
+ }
- case WM_UPDATEDATA:
- ListView_DeleteAllItems(GetDlgItem(hwndDlg, IDC_DATALIST));
- LoadBriefInfoText(hwndDlg, hContact);
- DBDataManage(hContact, WDBM_DETAILDISPLAY, (WPARAM)hwndDlg, 0);
+ void OnDestroy() override
+ {
+ DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_BIG, 0));
+ DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, 0));
- // set icons
- {
- HICON hIcon = GetStatusIconBig(hContact);
- DestroyIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, LPARAM(hIcon)));
- DestroyIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, LPARAM(hIcon)));
- }
+ Utils_SaveWindowPosition(m_hwnd, NULL, MODULENAME, "BriefInfo_");
+ WindowList_Remove(hDataWindowList, m_hwnd);
+ }
- RedrawWindow(GetDlgItem(hwndDlg, IDC_HEADERBAR), nullptr, nullptr, RDW_INVALIDATE | RDW_UPDATENOW);
- break;
+ int Resizer(UTILRESIZECONTROL *urc) override
+ {
+ switch (urc->wId) {
+ case IDC_HEADERBAR:
+ return RD_ANCHORX_LEFT | RD_ANCHORY_TOP | RD_ANCHORX_WIDTH;
- case WM_SIZE:
- {
- RECT rc;
- HWND hList = GetDlgItem(hwndDlg, IDC_DATALIST);
- GetWindowRect(hList, &rc);
- ListView_SetColumnWidth(hList, 1, ListView_GetColumnWidth(hList, 1) + (int)LOWORD(lParam) - (rc.right - rc.left));
+ case IDC_MTEXT:
+ return RD_ANCHORX_LEFT | RD_ANCHORY_TOP | RD_ANCHORX_WIDTH | RD_ANCHORY_HEIGHT;
+
+ case IDC_DATALIST:
+ m_list.SetColumnWidth(1, urc->dlgNewSize.cx - m_list.GetColumnWidth(0) - GetSystemMetrics(SM_CXVSCROLL));
+ return RD_ANCHORX_LEFT | RD_ANCHORY_TOP | RD_ANCHORX_WIDTH | RD_ANCHORY_HEIGHT;
- Utils_ResizeDialog(hwndDlg, g_plugin.getInst(), MAKEINTRESOURCEA(IDD_BRIEF), BriefDlgResizer);
+ case IDC_MUPDATE:
+ return RD_ANCHORX_LEFT | RD_ANCHORY_BOTTOM;
+
+ case IDC_MTOGGLE:
+ case IDC_MWEBPAGE:
+ case IDCANCEL:
+ return RD_ANCHORX_RIGHT | RD_ANCHORY_BOTTOM;
}
- break;
+ return RD_ANCHORX_LEFT | RD_ANCHORY_TOP;
+ }
- case WM_GETMINMAXINFO:
- {
- LPMINMAXINFO mmi = (LPMINMAXINFO)lParam;
+ INT_PTR OnUpdate(UINT = 0, WPARAM = 0, LPARAM = 0)
+ {
+ m_list.DeleteAllItems();
+
+ // load weather information from the contact into the WEATHERINFO struct
+ WEATHERINFO winfo = m_proto->LoadWeatherInfo(hContact);
+ // check if data exist. If not, display error message box
+ if (!m_proto->getByte(hContact, "IsUpdated"))
+ SetDlgItemTextW(m_hwnd, IDC_MTEXT, TranslateT("No information available.\r\nPlease update weather condition first."));
+ else {
+ // set the display text and show the message box
+ SetDlgItemTextW(m_hwnd, IDC_MTEXT, GetDisplay(&winfo, m_proto->GetTextValue('B')));
+ }
- // The minimum width in points
- mmi->ptMinTrackSize.x = 350;
- // The minimum height in points
- mmi->ptMinTrackSize.y = 300;
+ SetWindowTextW(m_hwnd, winfo.city);
+ SetDlgItemTextW(m_hwnd, IDC_HEADERBAR, GetDisplay(&winfo, L"%c, %t"));
+
+ // get all the settings and store them in a temporary list
+ LIST<char> arSettings(10);
+ db_enum_settings(hContact, GetWeatherDataFromDB, WEATHERCONDITION, &arSettings);
+
+ auto T = arSettings.rev_iter();
+ for (auto &it: T) {
+ CMStringW wszText(db_get_wsm(hContact, WEATHERCONDITION, it));
+ if (wszText.IsEmpty())
+ continue;
+
+ // skip the "WeatherInfo" variable
+ if (!mir_strcmp(it, "WeatherInfo") || !mir_strcmp(it, "Ignore") || it[0] == '#')
+ continue;
+
+ wszText.Replace(L"; ", L";\r\n ");
+
+ _A2T strW(it);
+ LV_ITEM lvi = {};
+ lvi.mask = LVIF_TEXT | LVIF_PARAM;
+ lvi.lParam = T.indexOf(&it);
+ lvi.pszText = TranslateW(strW);
+ lvi.iItem = m_list.InsertItem(&lvi);
+ lvi.pszText = wszText.GetBuffer();
+ m_list.SetItemText(lvi.iItem, 1, wszText);
}
- break;
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDCANCEL:
- // close the info window
- DestroyWindow(hwndDlg);
- break;
+ // set icons
+ HICON hIcon = m_proto->GetStatusIconBig(hContact);
+ DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_BIG, LPARAM(hIcon)));
+ DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, LPARAM(hIcon)));
- case IDC_MUPDATE:
- {
- HWND hList = GetDlgItem(hwndDlg, IDC_DATALIST);
-
- // update current data
- // set the text to "updating"
- SetDlgItemText(hwndDlg, IDC_MTEXT, TranslateT("Retrieving new data, please wait..."));
- ListView_DeleteAllItems(hList);
-
- LV_ITEM lvi = {};
- lvi.mask = LVIF_TEXT | LVIF_PARAM;
- lvi.lParam = 1;
- lvi.pszText = L"";
- lvi.iItem = ListView_InsertItem(hList, &lvi);
- lvi.pszText = TranslateT("Retrieving new data, please wait...");
- ListView_SetItemText(hList, lvi.iItem, 1, lvi.pszText);
- UpdateSingleStation(hContact, 0);
- break;
- }
+ RedrawWindow(GetDlgItem(m_hwnd, IDC_HEADERBAR), nullptr, nullptr, RDW_INVALIDATE | RDW_UPDATENOW);
+ return 0;
+ }
- case IDC_MWEBPAGE:
- LoadForecast(hContact, 0); // read complete forecast
- break;
+ void onList_Track(CCtrlListView::TEventInfo *ev)
+ {
+ auto *nlv = ev->nmlv;
+ if (nlv->iItem == -1 || nlv->iItem == iOldItem || nlv->iSubItem != 1)
+ return;
- case IDC_MTOGGLE:
- if (IsWindowVisible(GetDlgItem(hwndDlg, IDC_DATALIST)))
- SetDlgItemText(hwndDlg, IDC_MTOGGLE, TranslateT("More Info"));
- else
- SetDlgItemText(hwndDlg, IDC_MTOGGLE, TranslateT("Brief Info"));
- ShowWindow(GetDlgItem(hwndDlg, IDC_DATALIST), (int)!IsWindowVisible(
- GetDlgItem(hwndDlg, IDC_DATALIST)));
- ShowWindow(GetDlgItem(hwndDlg, IDC_MTEXT), (int)!IsWindowVisible(GetDlgItem(hwndDlg, IDC_MTEXT)));
- break;
- }
- break;
+ iOldItem = nlv->iItem;
- case WM_NOTIFY:
- {
- LPNMHDR pNmhdr = (LPNMHDR)lParam;
- if (pNmhdr->idFrom == IDC_MTEXT && pNmhdr->code == EN_LINK) {
- ENLINK *enlink = (ENLINK *)lParam;
- switch (enlink->msg) {
- case WM_LBUTTONUP:
- TEXTRANGE tr;
- tr.chrg = enlink->chrg;
- tr.lpstrText = (wchar_t*)mir_alloc(sizeof(wchar_t)*(tr.chrg.cpMax - tr.chrg.cpMin + 8));
- SendMessage(pNmhdr->hwndFrom, EM_GETTEXTRANGE, 0, (LPARAM)&tr);
- Utils_OpenUrlW(tr.lpstrText);
- mir_free(tr.lpstrText);
- break;
- }
- }
- }
- break;
+ m_list.GetItemText(nlv->iItem, nlv->iSubItem, m_buf, _countof(m_buf));
+ m_timer.Start(100);
+ }
- case WM_CLOSE:
- DestroyWindow(hwndDlg);
- break;
+ void onTimer(CTimer *pTimer)
+ {
+ pTimer->Stop();
- case WM_DESTROY:
- DestroyIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0));
- DestroyIcon((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, 0));
+ if (wcslen(m_buf) > 50) {
+ CLCINFOTIP ti = {};
+ ti.cbSize = sizeof(TOOLINFO);
+ ti.hItem = (HANDLE)iOldItem;
+ Tipper_ShowTip(m_buf, &ti);
+ }
+ else Tipper_Hide();
+ }
- Utils_SaveWindowPosition(hwndDlg, NULL, MODULENAME, "BriefInfo_");
- WindowList_Remove(hDataWindowList, hwndDlg);
- break;
+ void onClick_Update(CCtrlButton *)
+ {
+ // update current data
+ // set the text to "updating"
+ SetDlgItemText(m_hwnd, IDC_MTEXT, TranslateT("Retrieving new data, please wait..."));
+ m_list.DeleteAllItems();
+
+ LV_ITEM lvi = {};
+ lvi.mask = LVIF_TEXT | LVIF_PARAM;
+ lvi.lParam = 1;
+ lvi.pszText = L"";
+ lvi.iItem = m_list.InsertItem(&lvi);
+ lvi.pszText = TranslateT("Retrieving new data, please wait...");
+ m_list.SetItemText(lvi.iItem, 1, lvi.pszText);
+ m_proto->UpdateSingleStation(hContact, 0);
}
- return FALSE;
-}
+ void onClick_Webpage(CCtrlButton *)
+ {
+ m_proto->LoadForecast(hContact, 0); // read complete forecast
+ }
+
+ void onClick_Toggle(CCtrlButton *)
+ {
+ if (IsWindowVisible(m_list.GetHwnd()))
+ SetDlgItemText(m_hwnd, IDC_MTOGGLE, TranslateT("More Info"));
+ else
+ SetDlgItemText(m_hwnd, IDC_MTOGGLE, TranslateT("Brief Info"));
+ ShowWindow(m_list.GetHwnd(), (int)!IsWindowVisible(m_list.GetHwnd()));
+ ShowWindow(GetDlgItem(m_hwnd, IDC_MTEXT), (int)!IsWindowVisible(GetDlgItem(m_hwnd, IDC_MTEXT)));
+ }
+};
-// show brief information dialog
-// wParam = current contact
-int BriefInfo(WPARAM wParam, LPARAM)
+INT_PTR CWeatherProto::BriefInfo(WPARAM hContact, LPARAM)
{
// make sure that the contact is actually a weather one
- if (!IsMyContact(wParam))
+ if (!IsMyContact(hContact))
return 0;
- HWND hMoreDataDlg = WindowList_Find(hDataWindowList, wParam);
+ HWND hMoreDataDlg = WindowList_Find(hDataWindowList, hContact);
if (hMoreDataDlg != nullptr) {
SetForegroundWindow(hMoreDataDlg);
SetFocus(hMoreDataDlg);
}
- else hMoreDataDlg = CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_BRIEF), nullptr, DlgProcMoreData, (LPARAM)wParam);
+ else {
+ auto *pDlg = new CBriefInfoDlg(this, hContact);
+ pDlg->Create();
+ hMoreDataDlg = pDlg->GetHwnd();
+ }
ShowWindow(GetDlgItem(hMoreDataDlg, IDC_DATALIST), 0);
ShowWindow(GetDlgItem(hMoreDataDlg, IDC_MTEXT), 1);
@@ -260,12 +280,18 @@ int BriefInfo(WPARAM wParam, LPARAM)
return 1;
}
+int CWeatherProto::BriefInfoEvt(WPARAM wParam, LPARAM)
+{
+ return BriefInfo(wParam, 0);
+}
+
/////////////////////////////////////////////////////////////////////////////////////////
// User info dialog
class WeatherUserInfoDlg : public CUserInfoPageDlg
{
CCtrlButton btnDetail;
+ CWeatherProto *ppro;
public:
WeatherUserInfoDlg() :
@@ -278,13 +304,13 @@ public:
bool OnInitDialog() override
{
SendDlgItemMessage(m_hwnd, IDC_MOREDETAIL, BUTTONSETASFLATBTN, TRUE, 0);
+ ppro = (CWeatherProto *)Proto_GetContactInstance(m_hContact);
// load weather info for the contact
- wchar_t str[MAX_TEXT_SIZE];
- WEATHERINFO w = LoadWeatherInfo(m_hContact);
- SetDlgItemText(m_hwnd, IDC_INFO1, GetDisplay(&w, TranslateT("Current condition for %n"), str));
+ WEATHERINFO w = ppro->LoadWeatherInfo(m_hContact);
+ SetDlgItemText(m_hwnd, IDC_INFO1, GetDisplay(&w, TranslateT("Current condition for %n")));
- SendDlgItemMessage(m_hwnd, IDC_INFOICON, STM_SETICON, (WPARAM)GetStatusIconBig(m_hContact), 0);
+ SendDlgItemMessage(m_hwnd, IDC_INFOICON, STM_SETICON, (WPARAM)ppro->GetStatusIconBig(m_hContact), 0);
// bold and enlarge the current condition
LOGFONT lf;
@@ -296,19 +322,16 @@ public:
SendDlgItemMessage(m_hwnd, IDC_INFO2, WM_SETFONT, (WPARAM)CreateFontIndirect(&lf), 0);
// set the text for displaying other current weather conditions data
- GetDisplay(&w, L"%c %t", str);
- SetDlgItemText(m_hwnd, IDC_INFO2, str);
+ SetDlgItemText(m_hwnd, IDC_INFO2, GetDisplay(&w, L"%c %t"));
SetDlgItemText(m_hwnd, IDC_INFO3, w.feel);
SetDlgItemText(m_hwnd, IDC_INFO4, w.pressure);
- GetDisplay(&w, L"%i %w", str);
- SetDlgItemText(m_hwnd, IDC_INFO5, str);
+ SetDlgItemText(m_hwnd, IDC_INFO5, GetDisplay(&w, L"%i %w"));
SetDlgItemText(m_hwnd, IDC_INFO6, w.dewpoint);
SetDlgItemText(m_hwnd, IDC_INFO7, w.sunrise);
SetDlgItemText(m_hwnd, IDC_INFO8, w.sunset);
SetDlgItemText(m_hwnd, IDC_INFO9, w.high);
SetDlgItemText(m_hwnd, IDC_INFO10, w.low);
- GetDisplay(&w, TranslateT("Last update on: %u"), str);
- SetDlgItemText(m_hwnd, IDC_INFO11, str);
+ SetDlgItemText(m_hwnd, IDC_INFO11, GetDisplay(&w, TranslateT("Last update on: %u")));
SetDlgItemText(m_hwnd, IDC_INFO12, w.humid);
SetDlgItemText(m_hwnd, IDC_INFO13, w.vis);
return true;
@@ -323,8 +346,11 @@ public:
void onClick_Detail(CCtrlButton *)
{
HWND hMoreDataDlg = WindowList_Find(hDataWindowList, m_hContact);
- if (hMoreDataDlg == nullptr)
- hMoreDataDlg = CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_BRIEF), nullptr, DlgProcMoreData, m_hContact);
+ if (hMoreDataDlg == nullptr) {
+ auto *pDlg = new CBriefInfoDlg(ppro, m_hContact);
+ pDlg->Create();
+ hMoreDataDlg = pDlg->GetHwnd();
+ }
else {
SetForegroundWindow(hMoreDataDlg);
SetFocus(hMoreDataDlg);
@@ -334,21 +360,16 @@ public:
}
};
-int UserInfoInit(WPARAM wParam, LPARAM hContact)
+int CWeatherProto::UserInfoInit(WPARAM wParam, LPARAM hContact)
{
- USERINFOPAGE uip = {};
- uip.szTitle.a = MODULENAME;
- uip.position = 100000000;
- uip.flags = ODPF_ICON;
- uip.dwInitParam = LPARAM(g_plugin.getIconHandle(IDI_ICON));
-
- if (hContact == 0) {
- uip.pDialog = new WeatherMyDetailsDlg();
- g_plugin.addUserInfo(wParam, &uip);
- }
- else if (IsMyContact(hContact)) { // check if it is a weather contact
+ // check if it is a weather contact
+ if (IsMyContact(hContact)) {
+ USERINFOPAGE uip = {};
+ uip.szTitle.w = m_tszUserName;
+ uip.position = 100000000;
+ uip.flags = ODPF_ICON | ODPF_BOLDGROUPS | ODPF_UNICODE;
+ uip.dwInitParam = LPARAM(g_plugin.getIconHandle(IDI_ICON));
uip.pDialog = new WeatherUserInfoDlg();
- uip.flags |= ODPF_BOLDGROUPS;
g_plugin.addUserInfo(wParam, &uip);
}
return 0;