diff options
author | aunsane <aunsane@gmail.com> | 2018-10-06 01:05:46 +0300 |
---|---|---|
committer | aunsane <aunsane@gmail.com> | 2018-10-06 01:05:46 +0300 |
commit | 74d0eac304a0ea26a7c28b26452f373b2dce0fea (patch) | |
tree | 4820dbbb96f8552f98e29c7dd403a1b8ff2fadb6 /plugins/NewStory | |
parent | 520a255f25c64b2fb89d2f3559449b2e308c1175 (diff) |
NewStory: porting to ng (not complete)
Diffstat (limited to 'plugins/NewStory')
-rw-r--r-- | plugins/NewStory/res/resource.rc | 4 | ||||
-rw-r--r-- | plugins/NewStory/src/calendartool.cpp | 4 | ||||
-rw-r--r-- | plugins/NewStory/src/fonts.cpp | 63 | ||||
-rw-r--r-- | plugins/NewStory/src/history.cpp | 150 | ||||
-rw-r--r-- | plugins/NewStory/src/history.h | 2 | ||||
-rw-r--r-- | plugins/NewStory/src/history_array.cpp | 22 | ||||
-rw-r--r-- | plugins/NewStory/src/history_array.h | 4 | ||||
-rw-r--r-- | plugins/NewStory/src/history_control.cpp | 8 | ||||
-rw-r--r-- | plugins/NewStory/src/icons.cpp | 102 | ||||
-rw-r--r-- | plugins/NewStory/src/icons.h | 21 | ||||
-rw-r--r-- | plugins/NewStory/src/main.cpp | 30 | ||||
-rw-r--r-- | plugins/NewStory/src/opt_passwords.cpp | 268 | ||||
-rw-r--r-- | plugins/NewStory/src/options.cpp | 217 | ||||
-rw-r--r-- | plugins/NewStory/src/password.cpp | 99 | ||||
-rw-r--r-- | plugins/NewStory/src/password.h | 6 | ||||
-rw-r--r-- | plugins/NewStory/src/stdafx.h | 1 | ||||
-rw-r--r-- | plugins/NewStory/src/templates.cpp | 593 | ||||
-rw-r--r-- | plugins/NewStory/src/templates.h | 4 |
18 files changed, 776 insertions, 822 deletions
diff --git a/plugins/NewStory/res/resource.rc b/plugins/NewStory/res/resource.rc index c1b5f5037d..7963b06071 100644 --- a/plugins/NewStory/res/resource.rc +++ b/plugins/NewStory/res/resource.rc @@ -1,13 +1,13 @@ //Microsoft Developer Studio generated resource script. // -#include "resource.h" +#include "..\src\resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // -#include "afxres.h" +#include "winres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS diff --git a/plugins/NewStory/src/calendartool.cpp b/plugins/NewStory/src/calendartool.cpp index 3d1e118fe7..f45e125bcc 100644 --- a/plugins/NewStory/src/calendartool.cpp +++ b/plugins/NewStory/src/calendartool.cpp @@ -1,4 +1,4 @@ -#include "headers.h" +#include "stdafx.h" struct CalendarToolData { @@ -87,5 +87,5 @@ time_t CalendarTool_Show(HWND hwnd, int x, int y) // HWND hwndTool = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_CALENDARTOOL), 0, CalendarToolDlgProc, (LPARAM)data); // ShowWindow(hwndTool, SW_SHOWNORMAL); - return DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_CALENDARTOOL), 0, CalendarToolDlgProc, (LPARAM)data); + return DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CALENDARTOOL), 0, CalendarToolDlgProc, (LPARAM)data); }
\ No newline at end of file diff --git a/plugins/NewStory/src/fonts.cpp b/plugins/NewStory/src/fonts.cpp index f454fdc976..0db756187b 100644 --- a/plugins/NewStory/src/fonts.cpp +++ b/plugins/NewStory/src/fonts.cpp @@ -1,40 +1,40 @@ -#include "headers.h" +#include "stdafx.h" MyColourID colors[] = { - {0, {sizeof(ColourID), MODULETITLE, "Incoming Messages", MODULENAME, "ColorMsgIn", 0, RGB(0xff, 0xff, 0xff), 0}}, - {0, {sizeof(ColourID), MODULETITLE, "Outgoing Messages", MODULENAME, "ColorMsgOut", 0, RGB(0xff, 0xff, 0xff), 1}}, + {0, {MODULETITLE, "Incoming Messages", MODULENAME, "ColorMsgIn", 0, RGB(0xff, 0xff, 0xff), 0}}, + {0, {MODULETITLE, "Outgoing Messages", MODULENAME, "ColorMsgOut", 0, RGB(0xff, 0xff, 0xff), 1}}, - {0, {sizeof(ColourID), MODULETITLE, "Incoming Files", MODULENAME, "ColorFileIn", 0, RGB(0xff, 0xff, 0xff), 2}}, - {0, {sizeof(ColourID), MODULETITLE, "Outgoing Files", MODULENAME, "ColorFileOut", 0, RGB(0xff, 0xff, 0xff), 3}}, + {0, {MODULETITLE, "Incoming Files", MODULENAME, "ColorFileIn", 0, RGB(0xff, 0xff, 0xff), 2}}, + {0, {MODULETITLE, "Outgoing Files", MODULENAME, "ColorFileOut", 0, RGB(0xff, 0xff, 0xff), 3}}, - {0, {sizeof(ColourID), MODULETITLE, "Incoming URLs", MODULENAME, "ColorURLIn", 0, RGB(0xff, 0xff, 0xff), 4}}, - {0, {sizeof(ColourID), MODULETITLE, "Outgoing URLs", MODULENAME, "ColorURLOut", 0, RGB(0xff, 0xff, 0xff), 5}}, + {0, {MODULETITLE, "Incoming URLs", MODULENAME, "ColorURLIn", 0, RGB(0xff, 0xff, 0xff), 4}}, + {0, {MODULETITLE, "Outgoing URLs", MODULENAME, "ColorURLOut", 0, RGB(0xff, 0xff, 0xff), 5}}, - {0, {sizeof(ColourID), MODULETITLE, "Status changes", MODULENAME, "ColorStatus", 0, RGB(0xff, 0xff, 0xff), 6}}, + {0, {MODULETITLE, "Status changes", MODULENAME, "ColorStatus", 0, RGB(0xff, 0xff, 0xff), 6}}, - {0, {sizeof(ColourID), MODULETITLE, "Other Outgoing Events", MODULENAME, "ColorOut", 0, RGB(0xff, 0xff, 0xff), 7}}, - {0, {sizeof(ColourID), MODULETITLE, "Other Incoming Events", MODULENAME, "ColorIn", 0, RGB(0xff, 0xff, 0xff), 8}}, + {0, {MODULETITLE, "Other Outgoing Events", MODULENAME, "ColorOut", 0, RGB(0xff, 0xff, 0xff), 7}}, + {0, {MODULETITLE, "Other Incoming Events", MODULENAME, "ColorIn", 0, RGB(0xff, 0xff, 0xff), 8}}, - {0, {sizeof(ColourID), MODULETITLE, "Selected Items", MODULENAME, "ColorSel", 0, RGB(0x60, 0x60, 0x60), 9}}, - {0, {sizeof(ColourID), MODULETITLE, "Selected Items (Text)", MODULENAME, "ColorSelTxt", 0, RGB(0xff, 0xff, 0xff), 10}} + {0, {MODULETITLE, "Selected Items", MODULENAME, "ColorSel", 0, RGB(0x60, 0x60, 0x60), 9}}, + {0, {MODULETITLE, "Selected Items (Text)", MODULENAME, "ColorSelTxt", 0, RGB(0xff, 0xff, 0xff), 10}} }; MyFontID fonts[] = { - {0, 0, 0, {sizeof(FontID), MODULETITLE, "Incoming Messages", MODULENAME, "FontMsgIn", 0, {0}, 0}}, - {0, 0, 0, {sizeof(FontID), MODULETITLE, "Outgoing Messages", MODULENAME, "FontMsgOut", 0, {0}, 1}}, + {0, 0, 0, {MODULETITLE, "Incoming Messages", MODULENAME, "FontMsgIn", 0, {0}, 0}}, + {0, 0, 0, {MODULETITLE, "Outgoing Messages", MODULENAME, "FontMsgOut", 0, {0}, 1}}, - {0, 0, 0, {sizeof(FontID), MODULETITLE, "Incoming Files", MODULENAME, "FontFileIn", 0, {0}, 2}}, - {0, 0, 0, {sizeof(FontID), MODULETITLE, "Outgoing Files", MODULENAME, "FontFileOut", 0, {0}, 3}}, + {0, 0, 0, {MODULETITLE, "Incoming Files", MODULENAME, "FontFileIn", 0, {0}, 2}}, + {0, 0, 0, {MODULETITLE, "Outgoing Files", MODULENAME, "FontFileOut", 0, {0}, 3}}, - {0, 0, 0, {sizeof(FontID), MODULETITLE, "Incoming URLs", MODULENAME, "FontURLIn", 0, {0}, 4}}, - {0, 0, 0, {sizeof(FontID), MODULETITLE, "Outgoing URLs", MODULENAME, "FontURLOut", 0, {0}, 5}}, + {0, 0, 0, {MODULETITLE, "Incoming URLs", MODULENAME, "FontURLIn", 0, {0}, 4}}, + {0, 0, 0, {MODULETITLE, "Outgoing URLs", MODULENAME, "FontURLOut", 0, {0}, 5}}, - {0, 0, 0, {sizeof(FontID), MODULETITLE, "Status changes", MODULENAME, "FontStatus", 0, {0}, 6}}, + {0, 0, 0, {MODULETITLE, "Status changes", MODULENAME, "FontStatus", 0, {0}, 6}}, - {0, 0, 0, {sizeof(FontID), MODULETITLE, "Other Outgoing Events", MODULENAME, "FontOut", 0, {0}, 7}}, - {0, 0, 0, {sizeof(FontID), MODULETITLE, "Other Incoming Events", MODULENAME, "FontIn", 0, {0}, 8}} + {0, 0, 0, {MODULETITLE, "Other Outgoing Events", MODULENAME, "FontOut", 0, {0}, 7}}, + {0, 0, 0, {MODULETITLE, "Other Incoming Events", MODULENAME, "FontIn", 0, {0}, 8}} // {sizeof(FontID), MODULETITLE, "Default Text", MODULENAME, "FontDef", FIDF_SAVEPOINTSIZE, {0}, 0}, // {sizeof(FontID), MODULETITLE, "Selected Item", MODULENAME, "FontSel", FIDF_SAVEPOINTSIZE, {0}, 1} @@ -44,12 +44,10 @@ int evtFontsChanged(WPARAM, LPARAM) { int i; for (i = 0; i < COLOR_COUNT; i++) - { - colors[i].cl = (COLORREF)CallService(MS_COLOUR_GET, (WPARAM)&colors[i].info, 0); - } - for (i = 0; i < FONT_COUNT; i++) - { - fonts[i].cl = (COLORREF)CallService(MS_FONT_GET, (WPARAM)&fonts[i].info, (LPARAM)fonts[i].lf); + colors[i].cl = Colour_Get(colors[i].info.group, colors[i].info.name); + + for (i = 0; i < FONT_COUNT; i++) { + fonts[i].cl = (COLORREF)Font_Get(fonts[i].info, fonts[i].lf); DeleteObject(fonts[i].hfnt); fonts[i].hfnt = CreateFontIndirectA(fonts[i].lf); } @@ -59,7 +57,7 @@ int evtFontsChanged(WPARAM, LPARAM) void InitFonts() { - bool isFSInstalled = ServiceExists(MS_FONT_GET) ? true : false; + bool isFSInstalled = /*ServiceExists(MS_FONT_GET) ? */true/* : false*/; int i; // damn msvc can't handle for(int i...) correctly! =( @@ -70,14 +68,15 @@ void InitFonts() { for (i = 0; i < COLOR_COUNT; i++) { - CallService(MS_COLOUR_REGISTER, (WPARAM)&colors[i].info, 0); - colors[i].cl = (COLORREF)CallService(MS_COLOUR_GET, (WPARAM)&colors[i].info, 0); + g_plugin.addColor(&colors[i].info); + colors[i].cl = Colour_Get(colors[i].info.group, colors[i].info.name); } for (i = 0; i < FONT_COUNT; i++) { - CallService(MS_FONT_REGISTER, (WPARAM)&fonts[i].info, 0); + //CallService(MS_FONT_REGISTER, (WPARAM)&fonts[i].info, 0); + g_plugin.addFont(&fonts[i].info); fonts[i].lf = (LOGFONTA *)malloc(sizeof(LOGFONTA)); - fonts[i].cl = (COLORREF)CallService(MS_FONT_GET, (WPARAM)&fonts[i].info, (LPARAM)fonts[i].lf); + fonts[i].cl = (COLORREF)Font_Get(fonts[i].info, fonts[i].lf); fonts[i].hfnt = CreateFontIndirectA(fonts[i].lf); //MessageBox(0, fonts[i].lf->lfFaceName, _T(""), MB_OK); } diff --git a/plugins/NewStory/src/history.cpp b/plugins/NewStory/src/history.cpp index 0bc77cdaa4..e02501c219 100644 --- a/plugins/NewStory/src/history.cpp +++ b/plugins/NewStory/src/history.cpp @@ -11,27 +11,27 @@ for the date picker: break; */ -#include "headers.h" +#include "stdafx.h" -HANDLE hNewstoryWindows = 0; +MWindowList hNewstoryWindows = 0; int evtEventAdded(WPARAM wParam, LPARAM lParam) { - HWND hwnd = WindowList_Find(hNewstoryWindows, (HANDLE)wParam); + HWND hwnd = WindowList_Find(hNewstoryWindows, (UINT_PTR)wParam); SendMessage(hwnd, UM_ADDEVENT, wParam, lParam); return 0; } int evtEventDeleted(WPARAM wParam, LPARAM lParam) { - HWND hwnd = WindowList_Find(hNewstoryWindows, (HANDLE)wParam); + HWND hwnd = WindowList_Find(hNewstoryWindows, (UINT_PTR)wParam); SendMessage(hwnd, UM_REMOVEEVENT, wParam, lParam); return 0; } void InitHistory() { - hNewstoryWindows = (HANDLE)CallService(MS_UTILS_ALLOCWINDOWLIST, 0, 0); + hNewstoryWindows = WindowList_Create(); HookEvent(ME_DB_EVENT_ADDED, evtEventAdded); HookEvent(ME_DB_EVENT_DELETED, evtEventDeleted); @@ -90,7 +90,7 @@ struct WindowData WORD showFlags; bool gonnaRedraw; bool isContactHistory; - HANDLE hContact; + MCONTACT hContact; int lastYear, lastMonth, lastDay; HTREEITEM hLastYear, hLastMonth, hLastDay; bool disableTimeTreeChange; @@ -406,7 +406,7 @@ bool ExportHistoryDialog(HANDLE hContact, HWND hwndHistory) int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - CallSnappingWindowProc(hwnd, msg, wParam, lParam); + //CallSnappingWindowProc(hwnd, msg, wParam, lParam); WindowData *data = (WindowData *)GetWindowLong(hwnd, GWL_USERDATA); @@ -422,9 +422,9 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_INITDIALOG: { data = new WindowData; - data->hContact = (HANDLE)lParam; + data->hContact = (MCONTACT)lParam; data->disableTimeTreeChange = false; - data->showFlags = DBGetContactSettingWord(data->hContact, MODULENAME, "showFlags", 0x7f); + data->showFlags = db_get_w(data->hContact, MODULENAME, "showFlags", 0x7f); data->lastYear = data->lastMonth = data->lastDay = -1; data->hLastYear = data->hLastMonth = data->hLastDay = 0; @@ -447,7 +447,7 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) data->hwndBtnFindPrev = GetDlgItem(hwnd, IDC_FINDPREV); data->hwndBtnFindNext = GetDlgItem(hwnd, IDC_FINDNEXT); data->hwndSearchText = GetDlgItem(hwnd, IDC_SEARCHTEXT); - data->hwndStatus = CreateWindowEx(0, STATUSCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP, 0, 0, 0, 0, hwnd, NULL, hInst, NULL); + data->hwndStatus = CreateWindowEx(0, STATUSCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP, 0, 0, 0, 0, hwnd, NULL, g_plugin.getInst(), NULL); SendMessage(data->hwndStatus, SB_SETMINHEIGHT, GetSystemMetrics(SM_CYSMICON), 0); // filterbar @@ -513,8 +513,8 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) SetWindowLong(hwnd, GWL_USERDATA, (LONG)data); - data->hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_POPUPS)); - CallService(MS_LANGPACK_TRANSLATEMENU, (WPARAM)data->hMenu, 0); + data->hMenu = LoadMenu(g_plugin.getInst(), MAKEINTRESOURCE(IDR_POPUPS)); + //CallService(MS_LANGPACK_TRANSLATEMENU, (WPARAM)data->hMenu, 0); CheckMenuItem(GetSubMenu(data->hMenu, 1), IDD_FILTER_INCOMING, data->showFlags&HIST_SHOW_IN ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(GetSubMenu(data->hMenu, 1), IDD_FILTER_OUTGOING, @@ -569,13 +569,13 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) WindowList_Add(hNewstoryWindows, hwnd, data->hContact); - if (data->hContact && (data->hContact != INVALID_HANDLE_VALUE)) + if (data->hContact && (data->hContact != INVALID_CONTACT_ID)) { TCHAR *title = TplFormatString(TPL_TITLE, data->hContact, 0); SetWindowText(hwnd, title); free(title); } else - if (data->hContact == INVALID_HANDLE_VALUE) + if (data->hContact == INVALID_CONTACT_ID) { SetWindowText(hwnd, TranslateT("Newstory Search Results")); } else @@ -583,7 +583,7 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) SetWindowText(hwnd, TranslateT("System Newstory")); } - if (data->hContact != INVALID_HANDLE_VALUE) + if (data->hContact != INVALID_CONTACT_ID) { // ShowWindow(GetDlgItem(hwnd, IDC_TIMETREE), SW_HIDE); // ShowWindow(GetDlgItem(hwnd, IDC_ITEMS), SW_HIDE); @@ -595,11 +595,13 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) SendMessage(hwnd, UM_UPDATEICONS, 0, 0); SetFocus(GetDlgItem(hwnd, IDC_ITEMS2)); - RECT rc; - rc.left = (int)DBGetContactSettingDword(data->hContact, MODULENAME, "left", 0); - rc.top = (int)DBGetContactSettingDword(data->hContact, MODULENAME, "top", 0); - rc.right = (int)DBGetContactSettingDword(data->hContact, MODULENAME, "right", 0); - rc.bottom = (int)DBGetContactSettingDword(data->hContact, MODULENAME, "bottom", 0); + RECT rc + { + db_get_dw(data->hContact, MODULENAME, "left"), + db_get_dw(data->hContact, MODULENAME, "top"), + db_get_dw(data->hContact, MODULENAME, "right"), + db_get_dw(data->hContact, MODULENAME, "bottom") + }; if ((rc.left-rc.right) && (rc.top-rc.bottom)) MoveWindow(hwnd, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE); @@ -618,40 +620,40 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case UM_UPDATEICONS: { - SendMessage(hwnd, WM_SETICON, (WPARAM)ICON_SMALL, (LPARAM)icons[ICO_NEWSTORY].hIcon); - - SendMessage(GetDlgItem(hwnd, IDC_SEARCHICON), STM_SETICON, (WPARAM)icons[ICO_SEARCH].hIcon, 0); - - SendMessage(GetDlgItem(hwnd, IDC_USERINFO), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_USERINFO].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_MESSAGE), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_SENDMSG].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_USERMENU), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_USERMENU].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_COPY), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_COPY].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_LOGOPTIONS),BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_OPTIONS].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_FILTER), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_FILTER].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_DATEPOPUP), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_CALENDAR].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_SEARCH), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_SEARCH].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_EXPORT), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_EXPORT].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_CLOSE), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_CLOSE].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_FINDPREV), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_FINDPREV].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_FINDNEXT), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_FINDNEXT].hIcon); - - SendMessage(data->ibMessages.hwndIco, STM_SETICON, (LPARAM)icons[ICO_SENDMSG].hIcon, 0); - SendMessage(data->ibMessages.hwndIcoIn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_MSGIN].hIcon); - SendMessage(data->ibMessages.hwndIcoOut, BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_MSGOUT].hIcon); - SendMessage(data->ibFiles.hwndIco, STM_SETICON, (LPARAM)icons[ICO_FILE].hIcon, 0); - SendMessage(data->ibFiles.hwndIcoIn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_MSGIN].hIcon); - SendMessage(data->ibFiles.hwndIcoOut, BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_MSGOUT].hIcon); - SendMessage(data->ibUrls.hwndIco, STM_SETICON, (LPARAM)icons[ICO_URL].hIcon, 0); - SendMessage(data->ibUrls.hwndIcoIn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_MSGIN].hIcon); - SendMessage(data->ibUrls.hwndIcoOut, BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_MSGOUT].hIcon); - SendMessage(data->ibTotal.hwndIco, STM_SETICON, (LPARAM)icons[ICO_UNKNOWN].hIcon, 0); - SendMessage(data->ibTotal.hwndIcoIn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_MSGIN].hIcon); - SendMessage(data->ibTotal.hwndIcoOut, BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_MSGOUT].hIcon); + SendMessage(hwnd, WM_SETICON, (WPARAM)ICON_SMALL, (LPARAM)GetIcon(ICO_NEWSTORY)); + + SendMessage(GetDlgItem(hwnd, IDC_SEARCHICON), STM_SETICON, (WPARAM)GetIcon(ICO_SEARCH), 0); + + SendMessage(GetDlgItem(hwnd, IDC_USERINFO), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_USERINFO)); + SendMessage(GetDlgItem(hwnd, IDC_MESSAGE), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_SENDMSG)); + SendMessage(GetDlgItem(hwnd, IDC_USERMENU), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_USERMENU)); + SendMessage(GetDlgItem(hwnd, IDC_COPY), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_COPY)); + SendMessage(GetDlgItem(hwnd, IDC_LOGOPTIONS),BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_OPTIONS)); + SendMessage(GetDlgItem(hwnd, IDC_FILTER), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_FILTER)); + SendMessage(GetDlgItem(hwnd, IDC_DATEPOPUP), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_CALENDAR)); + SendMessage(GetDlgItem(hwnd, IDC_SEARCH), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_SEARCH)); + SendMessage(GetDlgItem(hwnd, IDC_EXPORT), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_EXPORT)); + SendMessage(GetDlgItem(hwnd, IDC_CLOSE), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_CLOSE)); + SendMessage(GetDlgItem(hwnd, IDC_FINDPREV), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_FINDPREV)); + SendMessage(GetDlgItem(hwnd, IDC_FINDNEXT), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_FINDNEXT)); + + SendMessage(data->ibMessages.hwndIco, STM_SETICON, (LPARAM)GetIcon(ICO_SENDMSG), 0); + SendMessage(data->ibMessages.hwndIcoIn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_MSGIN)); + SendMessage(data->ibMessages.hwndIcoOut, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_MSGOUT)); + SendMessage(data->ibFiles.hwndIco, STM_SETICON, (LPARAM)GetIcon(ICO_FILE), 0); + SendMessage(data->ibFiles.hwndIcoIn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_MSGIN)); + SendMessage(data->ibFiles.hwndIcoOut, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_MSGOUT)); + SendMessage(data->ibUrls.hwndIco, STM_SETICON, (LPARAM)GetIcon(ICO_URL), 0); + SendMessage(data->ibUrls.hwndIcoIn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_MSGIN)); + SendMessage(data->ibUrls.hwndIcoOut, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_MSGOUT)); + SendMessage(data->ibTotal.hwndIco, STM_SETICON, (LPARAM)GetIcon(ICO_UNKNOWN), 0); + SendMessage(data->ibTotal.hwndIcoIn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_MSGIN)); + SendMessage(data->ibTotal.hwndIcoOut, BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_MSGOUT)); if (CheckPassword(data->hContact, "")) - SendMessage(GetDlgItem(hwnd, IDC_SECURITY), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_NOPASSWORD].hIcon); + SendMessage(GetDlgItem(hwnd, IDC_SECURITY), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_NOPASSWORD)); else - SendMessage(GetDlgItem(hwnd, IDC_SECURITY), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_PASSWORD].hIcon); + SendMessage(GetDlgItem(hwnd, IDC_SECURITY), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_PASSWORD)); break; } @@ -690,7 +692,7 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) lpmis = (LPMEASUREITEMSTRUCT) lParam; if (lpmis->CtlType == ODT_MENU) - return CallService(MS_CLIST_MENUMEASUREITEM, wParam, lParam); + return Menu_MeasureItem(lParam); lpmis->itemHeight = 25; return TRUE; @@ -718,13 +720,13 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { WindowList_Remove(hNewstoryWindows, hwnd); - DBWriteContactSettingWord(data->hContact, MODULENAME, "showFlags", data->showFlags); + db_set_dw(data->hContact, MODULENAME, "showFlags", data->showFlags); RECT rc; GetWindowRect(hwnd, &rc); - DBWriteContactSettingDword(data->hContact, MODULENAME, "left", rc.left); - DBWriteContactSettingDword(data->hContact, MODULENAME, "top", rc.top); - DBWriteContactSettingDword(data->hContact, MODULENAME, "right", rc.right); - DBWriteContactSettingDword(data->hContact, MODULENAME, "bottom", rc.bottom); + db_set_dw(data->hContact, MODULENAME, "left", rc.left); + db_set_dw(data->hContact, MODULENAME, "top", rc.top); + db_set_dw(data->hContact, MODULENAME, "right", rc.right); + db_set_dw(data->hContact, MODULENAME, "bottom", rc.bottom); // CLCombo_Cleanup(GetDlgItem(hwnd, IDC_USERLIST)); @@ -740,7 +742,7 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) lpdis = (LPDRAWITEMSTRUCT) lParam; if (lpdis->CtlType == ODT_MENU) - return CallService(MS_CLIST_MENUDRAWITEM, wParam, lParam); + return Menu_DrawItem(lParam); if (lpdis->itemID == -1) return FALSE; @@ -783,8 +785,8 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_COMMAND: { - if (CallService(MS_CLIST_MENUPROCESSCOMMAND, MAKEWPARAM(LOWORD(wParam), MPCF_CONTACTMENU), (LPARAM) data->hContact)) - return TRUE; + //if (Menu_ProcessCommand(MAKEWPARAM(LOWORD(wParam), MPCF_CONTACTMENU), (LPARAM) data->hContact)) + // return TRUE; switch(LOWORD(wParam)) { case IDCANCEL: @@ -812,7 +814,7 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case IDC_USERMENU: { RECT rc; - HMENU hMenu = (HMENU) CallService(MS_CLIST_MENUBUILDCONTACT, (WPARAM)data->hContact, 0); + HMENU hMenu = Menu_BuildContactMenu(data->hContact); GetWindowRect(GetDlgItem(hwnd, LOWORD(wParam)), &rc); TrackPopupMenu(hMenu, 0, rc.left, rc.bottom, 0, hwnd, NULL); DestroyMenu(hMenu); @@ -838,31 +840,19 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case ID_LOGOPTIONS_OPTIONS: { OptShowPage = 0; - OPENOPTIONSDIALOG ood; - ood.cbSize = sizeof(ood); - ood.pszGroup = 0; - ood.pszPage = "Newstory"; - CallService(MS_OPT_OPENOPTIONS, 0, (LPARAM)&ood); + g_plugin.openOptions(nullptr, L"Newstory"); break; } case ID_LOGOPTIONS_TEMPLATES: { OptShowPage = 1; - OPENOPTIONSDIALOG ood; - ood.cbSize = sizeof(ood); - ood.pszGroup = 0; - ood.pszPage = "Newstory"; - CallService(MS_OPT_OPENOPTIONS, 0, (LPARAM)&ood); + g_plugin.openOptions(nullptr, L"Newstory"); break; } case ID_LOGOPTIONS_PASSWORDS: { OptShowPage = 2; - OPENOPTIONSDIALOG ood; - ood.cbSize = sizeof(ood); - ood.pszGroup = 0; - ood.pszPage = "Newstory"; - CallService(MS_OPT_OPENOPTIONS, 0, (LPARAM)&ood); + g_plugin.openOptions(nullptr, L"Newstory"); break; } } @@ -1043,15 +1033,15 @@ int CALLBACK HistoryDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) int svcShowNewstory(WPARAM wParam, LPARAM lParam) { - HWND hwnd = (HWND)WindowList_Find(hNewstoryWindows, (HANDLE)wParam); + HWND hwnd = (HWND)WindowList_Find(hNewstoryWindows, (MCONTACT)wParam); if (hwnd && IsWindow(hwnd)) { SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); SetFocus(hwnd); } else - if (AskPassword((HANDLE)wParam)) + if (AskPassword((MCONTACT)wParam)) { - HWND hwnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_HISTORY), 0, HistoryDlgProc, wParam); + HWND hwnd = CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_HISTORY), 0, HistoryDlgProc, wParam); ShowWindow(hwnd, SW_SHOWNORMAL); } return 0; @@ -1067,7 +1057,7 @@ int svcShowSystemNewstory(WPARAM wParam, LPARAM lParam) } else if (AskPassword(0)) { - HWND hwnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_HISTORY), 0, HistoryDlgProc, 0); + HWND hwnd = CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_HISTORY), 0, HistoryDlgProc, 0); ShowWindow(hwnd, SW_SHOWNORMAL); } return 0; diff --git a/plugins/NewStory/src/history.h b/plugins/NewStory/src/history.h index c070d3e4d3..4aa5a05073 100644 --- a/plugins/NewStory/src/history.h +++ b/plugins/NewStory/src/history.h @@ -29,7 +29,7 @@ enum UM_JUMP2TIME }; -extern HANDLE hNewstoryWindows; +extern MWindowList hNewstoryWindows; void InitHistory(); void FreeHistory(); diff --git a/plugins/NewStory/src/history_array.cpp b/plugins/NewStory/src/history_array.cpp index 81758eab48..ed2ceadcdb 100644 --- a/plugins/NewStory/src/history_array.cpp +++ b/plugins/NewStory/src/history_array.cpp @@ -1,4 +1,4 @@ -#include "headers.h" +#include "stdafx.h" void CacheThreadFunc(void *arg); @@ -8,23 +8,21 @@ bool HistoryArray::ItemData::load(EventLoadMode mode) if (mode == ELM_NOTHING) return true; - if ((mode == ELM_INFO) && (!dbeOk || !dbe.cbSize)) + if ((mode == ELM_INFO) && !dbeOk) { dbeOk = true; - dbe.cbSize = sizeof(dbe); dbe.cbBlob = 0; dbe.pBlob = 0; - CallService(MS_DB_EVENT_GET, (WPARAM)hEvent, (LPARAM)&dbe); + db_event_get(hEvent, &dbe); return true; } if ((mode == ELM_DATA) && (!dbeOk || !dbe.cbBlob)) { dbeOk = true; - dbe.cbSize = sizeof(dbe); - dbe.cbBlob = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM)hEvent, 0); + dbe.cbBlob = db_event_getBlobSize(hEvent); dbe.pBlob = (PBYTE)calloc(dbe.cbBlob+1, 1); - CallService(MS_DB_EVENT_GET, (WPARAM)hEvent, (LPARAM)&dbe); + db_event_get(hEvent, &dbe); int aLength = 0; atext = 0; @@ -170,27 +168,27 @@ void HistoryArray::clear() preIndex = 0; } -bool HistoryArray::addHistory(HANDLE hContact, EventLoadMode mode) +bool HistoryArray::addHistory(MCONTACT hContact, EventLoadMode mode) { - int count = CallService(MS_DB_EVENT_GETCOUNT, (WPARAM)hContact, 0); + int count = db_event_count(hContact); allocateBlock(count); int i = 0; - HANDLE hEvent = (HANDLE)CallService(MS_DB_EVENT_FINDFIRST, (WPARAM)hContact, 0); + MEVENT hEvent = db_event_first(hContact); while (hEvent) { tail->items[i].hContact = hContact; tail->items[i].hEvent = hEvent; ++i; - hEvent = (HANDLE)CallService(MS_DB_EVENT_FINDNEXT, (WPARAM)hEvent, 0); + hEvent = db_event_next(hEvent, 0); } char buf[666]; return true; } -bool HistoryArray::addEvent(HANDLE hContact, HANDLE hEvent, EventLoadMode mode) +bool HistoryArray::addEvent(MCONTACT hContact, MEVENT hEvent, EventLoadMode mode) { allocateBlock(1); tail->items[0].hContact = hContact; diff --git a/plugins/NewStory/src/history_array.h b/plugins/NewStory/src/history_array.h index 924450a401..640548e84d 100644 --- a/plugins/NewStory/src/history_array.h +++ b/plugins/NewStory/src/history_array.h @@ -194,8 +194,8 @@ public: ~HistoryArray(); void clear(); - bool addHistory(HANDLE hContact, EventLoadMode mode = ELM_NOTHING); - bool addEvent(HANDLE hContact, HANDLE hEvent, EventLoadMode mode = ELM_NOTHING); + bool addHistory(MCONTACT hContact, EventLoadMode mode = ELM_NOTHING); + bool addEvent(MCONTACT hContact, MEVENT hEvent, EventLoadMode mode = ELM_NOTHING); // bool preloadEvents(int count = 10); diff --git a/plugins/NewStory/src/history_control.cpp b/plugins/NewStory/src/history_control.cpp index f433a3e1a7..02df609ef2 100644 --- a/plugins/NewStory/src/history_control.cpp +++ b/plugins/NewStory/src/history_control.cpp @@ -1,4 +1,4 @@ -#include "headers.h" +#include "stdafx.h" LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); @@ -12,7 +12,7 @@ void InitNewstoryControl() wndclass.lpfnWndProc = NewstoryListWndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = sizeof(void *); - wndclass.hInstance = hInst; + wndclass.hInstance = g_plugin.getInst(); wndclass.hIcon = NULL; wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = NULL; @@ -122,7 +122,7 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM case WM_USER: { - data->items.addHistory((HANDLE)wParam); + data->items.addHistory((MCONTACT)wParam); RecalcScrollBar(hwnd, data); data->scrollTopItem = data->items.getCount(); FixScrollPosition(hwnd, data); @@ -807,7 +807,7 @@ static void BeginEditItem(HWND hwnd, NewstoryListData *data, int index) } TCHAR *text = TplFormatString(tpl, item->hContact, item); - data->hwndEditBox = CreateWindow(_T("EDIT"), text, WS_CHILD|WS_BORDER|ES_READONLY|ES_MULTILINE|ES_AUTOVSCROLL, 0, top, rc.right-rc.left, itemHeight, hwnd, NULL, hInst, NULL); + data->hwndEditBox = CreateWindow(_T("EDIT"), text, WS_CHILD|WS_BORDER|ES_READONLY|ES_MULTILINE|ES_AUTOVSCROLL, 0, top, rc.right-rc.left, itemHeight, hwnd, NULL, g_plugin.getInst(), NULL); OldEditWndProc = (WNDPROC)SetWindowLong(data->hwndEditBox, GWL_WNDPROC, (LONG)HistoryEditWndProc); SendMessage(data->hwndEditBox, WM_SETFONT, (WPARAM)fonts[fontid].hfnt, 0); SendMessage(data->hwndEditBox, EM_SETMARGINS, EC_RIGHTMARGIN, 100); diff --git a/plugins/NewStory/src/icons.cpp b/plugins/NewStory/src/icons.cpp index 8572678804..61f9cd4211 100644 --- a/plugins/NewStory/src/icons.cpp +++ b/plugins/NewStory/src/icons.cpp @@ -1,74 +1,64 @@ -#include "headers.h" +#include "stdafx.h" -MyIconDesriptor icons[] = +static IconItem icons[] = { - {ICO_NEWSTORY, MODULENAME"/main", MODULETITLE, "Main Icon", 0}, - {ICO_USERINFO, MODULENAME"/userinfo", MODULETITLE, "User Info", 0}, - {ICO_USERMENU, MODULENAME"/usermenu", MODULETITLE, "User Menu", 0}, - {ICO_SEARCH, MODULENAME"/search", MODULETITLE, "Search", 0}, - {ICO_OPTIONS, MODULENAME"/options", MODULETITLE, "Options", 0}, - {ICO_FILTER, MODULENAME"/filter", MODULETITLE, "Filter", 0}, - {ICO_EXPORT, MODULENAME"/export", MODULETITLE, "Export", 0}, - {ICO_COPY, MODULENAME"/copy", MODULETITLE, "Copy", 0}, - {ICO_SENDMSG, MODULENAME"/message", MODULETITLE, "Send Message", 0}, - {ICO_CLOSE, MODULENAME"/close", MODULETITLE, "Close", 0}, + { LPGEN("Main Icon"), "main", ICO_NEWSTORY }, + { LPGEN("User Info"), "userinfo", ICO_USERINFO }, + { LPGEN("User Menu"), "usermenu", ICO_USERMENU }, + { LPGEN("Search"), "search", ICO_SEARCH }, + { LPGEN("Options"), "options", ICO_OPTIONS }, + { LPGEN("Filter"), "filter", ICO_FILTER }, + { LPGEN("Export"), "export", ICO_EXPORT }, + { LPGEN("Copy"), "copy", ICO_COPY }, + { LPGEN("Send Message"), "message", ICO_SENDMSG }, + { LPGEN("Close"), "close", ICO_CLOSE }, - {ICO_MSGIN, MODULENAME"/msgin", MODULETITLE, "Incoming Message", 0}, - {ICO_MSGOUT, MODULENAME"/msgout", MODULETITLE, "Outgoing Message", 0}, - {ICO_SIGNIN, MODULENAME"/signin", MODULETITLE, "User Signed In", 0}, - {ICO_FILE, MODULENAME"/file", MODULETITLE, "File", 0}, - {ICO_URL, MODULENAME"/url", MODULETITLE, "URL", 0}, - {ICO_UNKNOWN, MODULENAME"/unknown", MODULETITLE, "Unknown Event", 0}, - - {ICO_FINDPREV, MODULENAME"/findprev", MODULETITLE, "Find Previous", 0}, - {ICO_FINDNEXT, MODULENAME"/findnext", MODULETITLE, "Find Next", 0}, - {ICO_NOPASSWORD,MODULENAME"/nopassword",MODULETITLE, "Password disabled", 0}, - {ICO_PASSWORD, MODULENAME"/password", MODULETITLE, "Password enabled", 0}, - {ICO_CALENDAR, MODULENAME"/calendar", MODULETITLE, "Jump to Date", 0}, + { LPGEN("Incoming Message"), "msgin", ICO_MSGIN }, + { LPGEN("Outgoing Message"), "msgout", ICO_MSGOUT }, + { LPGEN("User Signed In"), "signin", ICO_SIGNIN }, + { LPGEN("File"), "file", ICO_FILE }, + { LPGEN("URL"), "url", ICO_URL }, + { LPGEN("Unknown Event"), "unknown", ICO_UNKNOWN }, - {ICO_TPLGROUP, MODULENAME"/tplgroup", MODULETITLE, "Template Group", 0}, - {ICO_RESET, MODULENAME"/reset", MODULETITLE, "Reset", 0}, - {ICO_PREVIEW, MODULENAME"/preview", MODULETITLE, "Update Preview", 0}, - {ICO_VARHELP, MODULENAME"/varhelp", MODULETITLE, "Help", 0}, - {ICO_SAVEPASS, MODULENAME"/savepass", MODULETITLE, "Save Password", 0} + { LPGEN("Find Previous"), "findprev", ICO_FINDPREV }, + { LPGEN("Find Next"), "findnext", ICO_FINDNEXT }, + { LPGEN("Password disabled"), "nopassword",ICO_NOPASSWORD }, + { LPGEN("Password enabled"), "password", ICO_PASSWORD }, + { LPGEN("Jump to Date"), "calendar", ICO_CALENDAR }, + + { LPGEN("Template Group"), "tplgroup", ICO_TPLGROUP }, + { LPGEN("Reset"), "reset", ICO_RESET }, + { LPGEN("Update Preview"), "preview", ICO_PREVIEW }, + { LPGEN("Help"), "varhelp", ICO_VARHELP }, + { LPGEN("Save Password"), "savepass", ICO_SAVEPASS } }; -int iconCount = sizeof(icons) / sizeof(icons[0]); +//int iconCount = sizeof(icons) / sizeof(icons[0]); int evtIconsChanged(WPARAM, LPARAM) { - RefreshIcons(icons, ICO_COUNT); - WindowList_Broadcast(hNewstoryWindows, UM_UPDATEICONS, 0, 0); + //RefreshIcons(icons, ICO_COUNT); + //WindowList_Broadcast(hNewstoryWindows, UM_UPDATEICONS, 0, 0); return 0; } -void InitIcons(MyIconDesriptor *icons, LPSTR szFilename, int count) +void InitIcons(LPSTR szFilename, int count) { - for (int i = 0; i < count; i++) - { - if (ServiceExists(MS_SKIN2_ADDICON)) - { - SKINICONDESC sid; - sid.cbSize = sizeof(sid); - sid.pszName = icons[i].szId; - sid.pszSection = icons[i].szGroup; - sid.pszDescription = icons[i].szTitle; - sid.pszDefaultFile = szFilename; - sid.iDefaultIndex = -icons[i].dwIndex-1; - CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid); - icons[i].hIcon = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)icons[i].szId); - } else - { - ExtractIconExA(szFilename, icons[i].dwIndex, 0, &icons[i].hIcon, 1); - } - } - + g_plugin.registerIcon(MODULETITLE, icons); HookEvent(ME_SKIN2_ICONSCHANGED, evtIconsChanged); } -void RefreshIcons(MyIconDesriptor *icons, int count) +void RefreshIcons(IconItem *icons, int count) +{ + //if (ServiceExists(MS_SKIN2_ADDICON)) + // for (int i = 0; i < count; i++) + // icons[i].hIcon = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)icons[i].szId); +} + +HICON GetIcon(int iconId) { - if (ServiceExists(MS_SKIN2_ADDICON)) - for (int i = 0; i < count; i++) - icons[i].hIcon = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)icons[i].szId); + for (auto &it : icons) + if (it.defIconID == iconId) + return IcoLib_GetIconByHandle(it.hIcolib); + return nullptr; }
\ No newline at end of file diff --git a/plugins/NewStory/src/icons.h b/plugins/NewStory/src/icons.h index e041c648e5..635ece3f7a 100644 --- a/plugins/NewStory/src/icons.h +++ b/plugins/NewStory/src/icons.h @@ -1,14 +1,3 @@ -struct MyIconDesriptor -{ - DWORD dwIndex; - - LPSTR szId; - LPSTR szGroup; - LPSTR szTitle; - - HICON hIcon; -}; - enum { ICO_NEWSTORY, // 0 @@ -40,8 +29,10 @@ enum ICO_COUNT // 26 }; -extern MyIconDesriptor icons[]; -extern int iconCount; +//extern IconItem icons[]; +//extern int iconCount; + +HICON GetIcon(int iconId); -void InitIcons(MyIconDesriptor *icons, LPSTR szFilename, int count); -void RefreshIcons(MyIconDesriptor *icons, int count);
\ No newline at end of file +void InitIcons(LPSTR szFilename, int count); +void RefreshIcons(IconItem *icons, int count);
\ No newline at end of file diff --git a/plugins/NewStory/src/main.cpp b/plugins/NewStory/src/main.cpp index 885c53393c..a88a597399 100644 --- a/plugins/NewStory/src/main.cpp +++ b/plugins/NewStory/src/main.cpp @@ -17,7 +17,8 @@ CMPlugin g_plugin; ///////////////////////////////////////////////////////////////////////////////////////// -PLUGININFOEX pluginInfoEx = { +PLUGININFOEX pluginInfoEx = +{ sizeof(PLUGININFOEX), __PLUGIN_NAME, PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), @@ -42,36 +43,33 @@ extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_UIHIST int evtModulesLoaded(WPARAM, LPARAM) { - InitIcons(icons, "plugins\\newstory_icons.dll", iconCount); + InitIcons("icons\\newstory_icons.dll", 0); InitFonts(); InitNewstoryControl(); InitHistory(); InitOptions(); LoadTemplates(); - CLISTMENUITEM mi; - ZeroMemory(&mi, sizeof(mi)); - mi.cbSize = sizeof(mi); + CMenuItem mi(&g_plugin); + mi.flags = CMIF_UNICODE; + mi.pszService = MS_HISTORY_SHOWCONTACTHISTORY; - mi.pszName = "User Newstory"; - mi.popupPosition = 1999990000; - mi.hIcon = icons[ICO_NEWSTORY].hIcon; - CallService(MS_CLIST_ADDCONTACTMENUITEM, (WPARAM)0, (LPARAM)&mi); + mi.name.w = L"User Newstory"; + mi.position = 1999990000; + mi.hIcon = GetIcon(ICO_NEWSTORY); + Menu_AddContactMenuItem(&mi); - ZeroMemory(&mi, sizeof(mi)); - mi.cbSize = sizeof(mi); mi.pszService = "Newstory/System"; - mi.pszName = "System Newstory"; - mi.popupPosition = 1999990000; - mi.hIcon = icons[ICO_NEWSTORY].hIcon; - CallService(MS_CLIST_ADDMAINMENUITEM, (WPARAM)0, (LPARAM)&mi); + mi.name.w = L"System Newstory"; + mi.position = 1999990000; + mi.hIcon = GetIcon(ICO_NEWSTORY); + Menu_AddMainMenuItem(&mi); return 0; } int CMPlugin::Load() { - CreateServiceFunction(MS_HISTORY_SHOWCONTACTHISTORY, svcShowNewstory); CreateServiceFunction("Newstory/System", svcShowSystemNewstory); diff --git a/plugins/NewStory/src/opt_passwords.cpp b/plugins/NewStory/src/opt_passwords.cpp index ac81dc01bc..cb59426f3b 100644 --- a/plugins/NewStory/src/opt_passwords.cpp +++ b/plugins/NewStory/src/opt_passwords.cpp @@ -4,26 +4,24 @@ int icoidNoPassword, icoidPassword; void SetAllContactIcons(HWND hwndList) { - HANDLE hContact,hItem; - hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDFIRST,0,0); - while (hContact) - { - hItem=(HANDLE)SendMessage(hwndList,CLM_FINDCONTACT,(WPARAM)hContact,0); - SendMessage(hwndList,CLM_SETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(0, CheckPassword(hContact,"")?icoidNoPassword:icoidPassword)); - hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact,0); + MCONTACT hContact, hItem; + hContact = db_find_first(); + for (auto &hContact : Contacts()) { + hItem = (MCONTACT)SendMessage(hwndList, CLM_FINDCONTACT, (WPARAM)hContact, 0); + SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(0, CheckPassword(hContact, "") ? icoidNoPassword : icoidPassword)); } } static void ResetListOptions(HWND hwndList) { - SendMessage(hwndList,CLM_SETBKBITMAP,0,(LPARAM)(HBITMAP)NULL); - SendMessage(hwndList,CLM_SETBKCOLOR,GetSysColor(COLOR_WINDOW),0); - SendMessage(hwndList,CLM_SETGREYOUTFLAGS,0,0); - SendMessage(hwndList,CLM_SETLEFTMARGIN,2,0); - SendMessage(hwndList,CLM_SETINDENT,10,0); - for(int i=0;i<=FONTID_MAX;i++) - SendMessage(hwndList,CLM_SETTEXTCOLOR,i,GetSysColor(COLOR_WINDOWTEXT)); - SetWindowLong(hwndList,GWL_STYLE,GetWindowLong(hwndList,GWL_STYLE)|CLS_SHOWHIDDEN); + SendMessage(hwndList, CLM_SETBKBITMAP, 0, (LPARAM)(HBITMAP)NULL); + SendMessage(hwndList, CLM_SETBKCOLOR, GetSysColor(COLOR_WINDOW), 0); + SendMessage(hwndList, CLM_SETGREYOUTFLAGS, 0, 0); + SendMessage(hwndList, CLM_SETLEFTMARGIN, 2, 0); + SendMessage(hwndList, CLM_SETINDENT, 10, 0); + for (int i = 0; i <= FONTID_MAX; i++) + SendMessage(hwndList, CLM_SETTEXTCOLOR, i, GetSysColor(COLOR_WINDOWTEXT)); + SetWindowLong(hwndList, GWL_STYLE, GetWindowLong(hwndList, GWL_STYLE) | CLS_SHOWHIDDEN); } BOOL CALLBACK OptPasswordsDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) @@ -31,144 +29,144 @@ BOOL CALLBACK OptPasswordsDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa HTREEITEM hitmGlobal, hitmMaster; switch (msg) { - case WM_INITDIALOG: - { - HIMAGELIST himg; - himg = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), (IsWinVerXPPlus()?ILC_COLOR32:ILC_COLOR16)|ILC_MASK, 3, 3); - icoidNoPassword = ImageList_AddIcon(himg, icons[ICO_NOPASSWORD].hIcon); - icoidPassword = ImageList_AddIcon(himg, icons[ICO_PASSWORD].hIcon); - SendDlgItemMessage(hwnd, IDC_LIST, CLM_SETEXTRAIMAGELIST, 0, (LPARAM)himg); + case WM_INITDIALOG: + { + HIMAGELIST himg; + himg = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR32 | ILC_MASK, 3, 3); + icoidNoPassword = ImageList_AddIcon(himg, GetIcon(ICO_NOPASSWORD)); + icoidPassword = ImageList_AddIcon(himg, GetIcon(ICO_PASSWORD)); + SendDlgItemMessage(hwnd, IDC_LIST, CLM_SETEXTRAIMAGELIST, 0, (LPARAM)himg); - SendDlgItemMessage(hwnd,IDC_LIST,CLM_SETEXTRACOLUMNS,1,0); + SendDlgItemMessage(hwnd, IDC_LIST, CLM_SETEXTRACOLUMNS, 1, 0); - CLCINFOITEM cii={0}; - cii.cbSize=sizeof(cii); - cii.flags=CLCIIF_GROUPFONT; + CLCINFOITEM cii = { 0 }; + cii.cbSize = sizeof(cii); + cii.flags = CLCIIF_GROUPFONT; - cii.pszText=TranslateT("** Global **"); - hitmGlobal = (HTREEITEM)SendDlgItemMessage(hwnd,IDC_LIST,CLM_ADDINFOITEM,0,(LPARAM)&cii); - SendMessage(GetDlgItem(hwnd, IDC_LIST),CLM_SETEXTRAIMAGE,(WPARAM)hitmGlobal,MAKELPARAM(0, icoidNoPassword)); + cii.pszText = TranslateT("** Global **"); + hitmGlobal = (HTREEITEM)SendDlgItemMessage(hwnd, IDC_LIST, CLM_ADDINFOITEM, 0, (LPARAM)&cii); + SendMessage(GetDlgItem(hwnd, IDC_LIST), CLM_SETEXTRAIMAGE, (WPARAM)hitmGlobal, MAKELPARAM(0, icoidNoPassword)); - cii.pszText=TranslateT("** Master **"); - hitmMaster = (HTREEITEM)SendDlgItemMessage(hwnd,IDC_LIST,CLM_ADDINFOITEM,0,(LPARAM)&cii); - SendMessage(GetDlgItem(hwnd, IDC_LIST),CLM_SETEXTRAIMAGE,(WPARAM)hitmMaster,MAKELPARAM(0, icoidNoPassword)); + cii.pszText = TranslateT("** Master **"); + hitmMaster = (HTREEITEM)SendDlgItemMessage(hwnd, IDC_LIST, CLM_ADDINFOITEM, 0, (LPARAM)&cii); + SendMessage(GetDlgItem(hwnd, IDC_LIST), CLM_SETEXTRAIMAGE, (WPARAM)hitmMaster, MAKELPARAM(0, icoidNoPassword)); - HWND hwndList = GetDlgItem(hwnd, IDC_LIST); + HWND hwndList = GetDlgItem(hwnd, IDC_LIST); - SetAllContactIcons(GetDlgItem(hwnd, IDC_LIST)); - ResetListOptions(GetDlgItem(hwnd, IDC_LIST)); + SetAllContactIcons(GetDlgItem(hwnd, IDC_LIST)); + ResetListOptions(GetDlgItem(hwnd, IDC_LIST)); - SendMessage(GetDlgItem(hwnd, IDC_ICO_NOPASSWORD), STM_SETICON, (WPARAM)icons[ICO_NOPASSWORD].hIcon, 0); - SendMessage(GetDlgItem(hwnd, IDC_ICO_PASSWORD), STM_SETICON, (WPARAM)icons[ICO_PASSWORD].hIcon, 0); + SendMessage(GetDlgItem(hwnd, IDC_ICO_NOPASSWORD), STM_SETICON, (WPARAM)GetIcon(ICO_NOPASSWORD), 0); + SendMessage(GetDlgItem(hwnd, IDC_ICO_PASSWORD), STM_SETICON, (WPARAM)GetIcon(ICO_PASSWORD), 0); - SendMessage(GetDlgItem(hwnd, IDC_SAVEPASSWORD), BUTTONSETASFLATBTN, 0, 0); - SendMessage(GetDlgItem(hwnd, IDC_SAVEPASSWORD), BUTTONADDTOOLTIP, (WPARAM)Translate("Save Password"), 0); - SendMessage(GetDlgItem(hwnd, IDC_SAVEPASSWORD), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_SAVEPASS].hIcon); + SendMessage(GetDlgItem(hwnd, IDC_SAVEPASSWORD), BUTTONSETASFLATBTN, 0, 0); + SendMessage(GetDlgItem(hwnd, IDC_SAVEPASSWORD), BUTTONADDTOOLTIP, (WPARAM)Translate("Save Password"), 0); + SendMessage(GetDlgItem(hwnd, IDC_SAVEPASSWORD), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_SAVEPASS)); -// hVisibleIcon=ImageList_GetIcon(hIml,1,ILD_NORMAL); -// SendDlgItemMessage(hwndDlg,IDC_VISIBLEICON,STM_SETICON,(WPARAM)hVisibleIcon,0); -// hInvisibleIcon=ImageList_GetIcon(hIml,2,ILD_NORMAL); -// SendDlgItemMessage(hwndDlg,IDC_INVISIBLEICON,STM_SETICON,(WPARAM)hInvisibleIcon,0); + // hVisibleIcon=ImageList_GetIcon(hIml,1,ILD_NORMAL); + // SendDlgItemMessage(hwndDlg,IDC_VISIBLEICON,STM_SETICON,(WPARAM)hVisibleIcon,0); + // hInvisibleIcon=ImageList_GetIcon(hIml,2,ILD_NORMAL); + // SendDlgItemMessage(hwndDlg,IDC_INVISIBLEICON,STM_SETICON,(WPARAM)hInvisibleIcon,0); - return TRUE; + return TRUE; + } + + case WM_NOTIFY: + switch (((LPNMHDR)lParam)->idFrom) + { + case 0: + { + switch (((LPNMHDR)lParam)->code) + { + case PSN_RESET: + { + return TRUE; + } + + case PSN_APPLY: + { + return TRUE; + } + } + break; } - case WM_NOTIFY: - switch(((LPNMHDR)lParam)->idFrom) + case IDC_LIST: + { + switch (((LPNMHDR)lParam)->code) { - case 0: - { - switch (((LPNMHDR)lParam)->code) - { - case PSN_RESET: - { - return TRUE; - } - - case PSN_APPLY: - { - return TRUE; - } - } - break; - } - - case IDC_LIST: - { - switch (((LPNMHDR)lParam)->code) - { - case CLN_NEWCONTACT: - case CLN_LISTREBUILT: - SetAllContactIcons(GetDlgItem(hwnd,IDC_LIST)); - //fall through + case CLN_NEWCONTACT: + case CLN_LISTREBUILT: + SetAllContactIcons(GetDlgItem(hwnd, IDC_LIST)); + //fall through // case CLN_CONTACTMOVED: // SetListGroupIcons(GetDlgItem(hwndDlg,IDC_LIST),(HANDLE)SendDlgItemMessage(hwndDlg,IDC_LIST,CLM_GETNEXTITEM,CLGN_ROOT,0),hItemAll,NULL); // break; // case CLN_OPTIONSCHANGED: - ResetListOptions(GetDlgItem(hwnd,IDC_LIST)); - break; -/* - case NM_CLICK: - { HANDLE hItem; - NMCLISTCONTROL *nm=(NMCLISTCONTROL*)lParam; - DWORD hitFlags; - int iImage; - int itemType; - - // Make sure we have an extra column - if (nm->iColumn == -1) - break; - - // Find clicked item - hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_HITTEST, (WPARAM)&hitFlags, MAKELPARAM(nm->pt.x,nm->pt.y)); - // Nothing was clicked - if (hItem == NULL) break; - // It was not a visbility icon - if (!(hitFlags & CLCHT_ONITEMEXTRA)) break; - - // Get image in clicked column (0=none, 1=visible, 2=invisible) - iImage = SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn, 0)); - if (iImage == 0) - iImage=nm->iColumn + 1; - else - if (iImage == 1 || iImage == 2) - iImage = 0; - - // Get item type (contact, group, etc...) - itemType = SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETITEMTYPE, (WPARAM)hItem, 0); - - // Update list, making sure that the options are mutually exclusive - if (itemType == CLCIT_CONTACT) { // A contact - SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn, iImage)); - if (iImage && SendDlgItemMessage(hwndDlg,IDC_LIST,CLM_GETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(nm->iColumn?0:1,0))!=0xFF) - SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn?0:1, 0)); - } - else if (itemType == CLCIT_INFO) { // All Contacts - SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn, iImage); - if (iImage) - SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn?0:1, 0); - } - else if (itemType == CLCIT_GROUP) { // A group - hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem); - if (hItem) { - SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn, iImage); - if (iImage) - SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn?0:1, 0); - } - } - // Update the all/none icons - SetListGroupIcons(GetDlgItem(hwndDlg, IDC_LIST), (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_ROOT, 0), hItemAll, NULL); - - // Activate Apply button - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - } -*/ - } - return TRUE; - } + ResetListOptions(GetDlgItem(hwnd, IDC_LIST)); + break; + /* + case NM_CLICK: + { HANDLE hItem; + NMCLISTCONTROL *nm=(NMCLISTCONTROL*)lParam; + DWORD hitFlags; + int iImage; + int itemType; + + // Make sure we have an extra column + if (nm->iColumn == -1) + break; + + // Find clicked item + hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_HITTEST, (WPARAM)&hitFlags, MAKELPARAM(nm->pt.x,nm->pt.y)); + // Nothing was clicked + if (hItem == NULL) break; + // It was not a visbility icon + if (!(hitFlags & CLCHT_ONITEMEXTRA)) break; + + // Get image in clicked column (0=none, 1=visible, 2=invisible) + iImage = SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn, 0)); + if (iImage == 0) + iImage=nm->iColumn + 1; + else + if (iImage == 1 || iImage == 2) + iImage = 0; + + // Get item type (contact, group, etc...) + itemType = SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETITEMTYPE, (WPARAM)hItem, 0); + + // Update list, making sure that the options are mutually exclusive + if (itemType == CLCIT_CONTACT) { // A contact + SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn, iImage)); + if (iImage && SendDlgItemMessage(hwndDlg,IDC_LIST,CLM_GETEXTRAIMAGE,(WPARAM)hItem,MAKELPARAM(nm->iColumn?0:1,0))!=0xFF) + SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn?0:1, 0)); + } + else if (itemType == CLCIT_INFO) { // All Contacts + SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn, iImage); + if (iImage) + SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn?0:1, 0); + } + else if (itemType == CLCIT_GROUP) { // A group + hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem); + if (hItem) { + SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn, iImage); + if (iImage) + SetAllChildIcons(GetDlgItem(hwndDlg, IDC_LIST), hItem, nm->iColumn?0:1, 0); + } + } + // Update the all/none icons + SetListGroupIcons(GetDlgItem(hwndDlg, IDC_LIST), (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_ROOT, 0), hItemAll, NULL); + + // Activate Apply button + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + } + */ } - break; + return TRUE; + } + } + break; } return FALSE; } diff --git a/plugins/NewStory/src/options.cpp b/plugins/NewStory/src/options.cpp index fb5283223a..c968da49e3 100644 --- a/plugins/NewStory/src/options.cpp +++ b/plugins/NewStory/src/options.cpp @@ -23,139 +23,138 @@ BOOL CALLBACK OptionsDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); static int OptionsInitialize(WPARAM wParam, LPARAM lParam) { OPTIONSDIALOGPAGE odp = { 0 }; - odp.cbSize = sizeof(odp); odp.position = 100000000; - odp.hInstance = hInst; odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS); - odp.pszTitle = Translate("Newstory"); -// odp.pszGroup = Translate("PopUps"); - odp.groupPosition = 910000000; - odp.flags=ODPF_BOLDGROUPS; + odp.szTitle.w = TranslateT("Newstory"); + // odp.pszGroup = Translate("PopUps"); + odp.position = 910000000; + odp.flags = ODPF_BOLDGROUPS; odp.pfnDlgProc = OptionsDlgProc; - CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp); + g_plugin.addOptions(wParam, &odp); return 0; } static void ThemeDialogBackground(HWND hwnd) { - if (IsWinVerXPPlus()) { + //if (IsWinVerXPPlus()) + { static HMODULE hThemeAPI = NULL; if (!hThemeAPI) hThemeAPI = GetModuleHandle(_T("uxtheme")); if (hThemeAPI) { - HRESULT (STDAPICALLTYPE *MyEnableThemeDialogTexture)(HWND,DWORD) = (HRESULT (STDAPICALLTYPE*)(HWND,DWORD))GetProcAddress(hThemeAPI,"EnableThemeDialogTexture"); + HRESULT(STDAPICALLTYPE *MyEnableThemeDialogTexture)(HWND, DWORD) = (HRESULT(STDAPICALLTYPE*)(HWND, DWORD))GetProcAddress(hThemeAPI, "EnableThemeDialogTexture"); if (MyEnableThemeDialogTexture) - MyEnableThemeDialogTexture(hwnd,0x00000002|0x00000004); //0x00000002|0x00000004=ETDT_ENABLETAB + MyEnableThemeDialogTexture(hwnd, 0x00000002 | 0x00000004); //0x00000002|0x00000004=ETDT_ENABLETAB } } } -BOOL CALLBACK OptionsDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch(msg) +BOOL CALLBACK OptionsDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) { - case WM_INITDIALOG: - { - TCITEM tci; - RECT rc; - - tci.mask = TCIF_PARAM|TCIF_TEXT; - tci.lParam = (LPARAM)CreateDialog(hInst,MAKEINTRESOURCE(IDD_OPT_PASSWORDS),GetDlgItem(hwnd, IDC_TAB),OptPasswordsDlgProc); - tci.pszText = TranslateT("Passwords (not ready yet)"); - if (tci.lParam) TabCtrl_InsertItem(GetDlgItem(hwnd,IDC_TAB),0,&tci); - GetClientRect(GetDlgItem(hwnd, IDC_TAB), &rc); - TabCtrl_AdjustRect(GetDlgItem(hwnd, IDC_TAB), FALSE, &rc); - ThemeDialogBackground((HWND)tci.lParam); - MoveWindow((HWND)tci.lParam, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE); - ShowWindow((HWND)tci.lParam,(OptShowPage==2)?SW_SHOW:SW_HIDE); - - tci.mask = TCIF_PARAM|TCIF_TEXT; - tci.lParam = (LPARAM)CreateDialog(hInst,MAKEINTRESOURCE(IDD_OPT_TEMPLATES),GetDlgItem(hwnd, IDC_TAB),OptTemplatesDlgProc); - tci.pszText = TranslateT("Templates"); - if (tci.lParam) TabCtrl_InsertItem(GetDlgItem(hwnd,IDC_TAB),0,&tci); - GetClientRect(GetDlgItem(hwnd, IDC_TAB), &rc); - TabCtrl_AdjustRect(GetDlgItem(hwnd, IDC_TAB), FALSE, &rc); - ThemeDialogBackground((HWND)tci.lParam); - MoveWindow((HWND)tci.lParam, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE); - ShowWindow((HWND)tci.lParam,(OptShowPage==1)?SW_SHOW:SW_HIDE); - - tci.mask = TCIF_PARAM|TCIF_TEXT; - tci.lParam = (LPARAM)CreateDialog(hInst,MAKEINTRESOURCE(IDD_OPT_GENERAL),GetDlgItem(hwnd, IDC_TAB), 0); - tci.pszText = TranslateT("General"); - if (tci.lParam) TabCtrl_InsertItem(GetDlgItem(hwnd,IDC_TAB),0,&tci); - GetClientRect(GetDlgItem(hwnd, IDC_TAB), &rc); - TabCtrl_AdjustRect(GetDlgItem(hwnd, IDC_TAB), FALSE, &rc); - ThemeDialogBackground((HWND)tci.lParam); - MoveWindow((HWND)tci.lParam, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE); - ShowWindow((HWND)tci.lParam,(OptShowPage==0)?SW_SHOW:SW_HIDE); - - TabCtrl_SetCurSel(GetDlgItem(hwnd, IDC_TAB), OptShowPage); - OptShowPage = 0; - return FALSE; - } - - case PSM_CHANGED: - { - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - break; - } + case WM_INITDIALOG: + { + TCITEM tci; + RECT rc; + + tci.mask = TCIF_PARAM | TCIF_TEXT; + tci.lParam = (LPARAM)CreateDialog(g_plugin.getInst(), MAKEINTRESOURCE(IDD_OPT_PASSWORDS), GetDlgItem(hwnd, IDC_TAB), OptPasswordsDlgProc); + tci.pszText = TranslateT("Passwords (not ready yet)"); + if (tci.lParam) TabCtrl_InsertItem(GetDlgItem(hwnd, IDC_TAB), 0, &tci); + GetClientRect(GetDlgItem(hwnd, IDC_TAB), &rc); + TabCtrl_AdjustRect(GetDlgItem(hwnd, IDC_TAB), FALSE, &rc); + ThemeDialogBackground((HWND)tci.lParam); + MoveWindow((HWND)tci.lParam, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE); + ShowWindow((HWND)tci.lParam, (OptShowPage == 2) ? SW_SHOW : SW_HIDE); + + tci.mask = TCIF_PARAM | TCIF_TEXT; + tci.lParam = (LPARAM)CreateDialog(g_plugin.getInst(), MAKEINTRESOURCE(IDD_OPT_TEMPLATES), GetDlgItem(hwnd, IDC_TAB), OptTemplatesDlgProc); + tci.pszText = TranslateT("Templates"); + if (tci.lParam) TabCtrl_InsertItem(GetDlgItem(hwnd, IDC_TAB), 0, &tci); + GetClientRect(GetDlgItem(hwnd, IDC_TAB), &rc); + TabCtrl_AdjustRect(GetDlgItem(hwnd, IDC_TAB), FALSE, &rc); + ThemeDialogBackground((HWND)tci.lParam); + MoveWindow((HWND)tci.lParam, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE); + ShowWindow((HWND)tci.lParam, (OptShowPage == 1) ? SW_SHOW : SW_HIDE); + + tci.mask = TCIF_PARAM | TCIF_TEXT; + tci.lParam = (LPARAM)CreateDialog(g_plugin.getInst(), MAKEINTRESOURCE(IDD_OPT_GENERAL), GetDlgItem(hwnd, IDC_TAB), 0); + tci.pszText = TranslateT("General"); + if (tci.lParam) TabCtrl_InsertItem(GetDlgItem(hwnd, IDC_TAB), 0, &tci); + GetClientRect(GetDlgItem(hwnd, IDC_TAB), &rc); + TabCtrl_AdjustRect(GetDlgItem(hwnd, IDC_TAB), FALSE, &rc); + ThemeDialogBackground((HWND)tci.lParam); + MoveWindow((HWND)tci.lParam, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE); + ShowWindow((HWND)tci.lParam, (OptShowPage == 0) ? SW_SHOW : SW_HIDE); + + TabCtrl_SetCurSel(GetDlgItem(hwnd, IDC_TAB), OptShowPage); + OptShowPage = 0; + return FALSE; + } - case WM_DESTROY: + case PSM_CHANGED: + { + SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); + break; + } + + case WM_DESTROY: + { + OptShowPage = 0; + break; + } + + case WM_NOTIFY: + { + switch (((LPNMHDR)lParam)->idFrom) { - OptShowPage = 0; + case 0: + { + switch (((LPNMHDR)lParam)->code) + { + case PSN_RESET: + case PSN_APPLY: + { + TCITEM tci; + int i, count; + tci.mask = TCIF_PARAM; + count = TabCtrl_GetItemCount(GetDlgItem(hwnd, IDC_TAB)); + for (i = 0; i < count; i++) + { + TabCtrl_GetItem(GetDlgItem(hwnd, IDC_TAB), i, &tci); + SendMessage((HWND)tci.lParam, WM_NOTIFY, wParam, lParam); + } + break; + } + } break; } - case WM_NOTIFY: + case IDC_TAB: { - switch(((LPNMHDR)lParam)->idFrom) - { - case 0: - { - switch (((LPNMHDR)lParam)->code) - { - case PSN_RESET: - case PSN_APPLY: - { - TCITEM tci; - int i,count; - tci.mask = TCIF_PARAM; - count = TabCtrl_GetItemCount(GetDlgItem(hwnd,IDC_TAB)); - for (i=0;i<count;i++) - { - TabCtrl_GetItem(GetDlgItem(hwnd,IDC_TAB),i,&tci); - SendMessage((HWND)tci.lParam,WM_NOTIFY,wParam,lParam); - } - break; - } - } - break; - } - - case IDC_TAB: - { - switch (((LPNMHDR)lParam)->code) - { - case TCN_SELCHANGING: - { - TCITEM tci; - tci.mask = TCIF_PARAM; - TabCtrl_GetItem(GetDlgItem(hwnd,IDC_TAB),TabCtrl_GetCurSel(GetDlgItem(hwnd,IDC_TAB)),&tci); - ShowWindow((HWND)tci.lParam,SW_HIDE); - break; - } - case TCN_SELCHANGE: - { - TCITEM tci; - tci.mask = TCIF_PARAM; - TabCtrl_GetItem(GetDlgItem(hwnd,IDC_TAB),TabCtrl_GetCurSel(GetDlgItem(hwnd,IDC_TAB)),&tci); - ShowWindow((HWND)tci.lParam,SW_SHOW); - break; - } - } - break; - } + switch (((LPNMHDR)lParam)->code) + { + case TCN_SELCHANGING: + { + TCITEM tci; + tci.mask = TCIF_PARAM; + TabCtrl_GetItem(GetDlgItem(hwnd, IDC_TAB), TabCtrl_GetCurSel(GetDlgItem(hwnd, IDC_TAB)), &tci); + ShowWindow((HWND)tci.lParam, SW_HIDE); + break; + } + case TCN_SELCHANGE: + { + TCITEM tci; + tci.mask = TCIF_PARAM; + TabCtrl_GetItem(GetDlgItem(hwnd, IDC_TAB), TabCtrl_GetCurSel(GetDlgItem(hwnd, IDC_TAB)), &tci); + ShowWindow((HWND)tci.lParam, SW_SHOW); + break; + } } break; } + } + break; + } } return FALSE; -} +} diff --git a/plugins/NewStory/src/password.cpp b/plugins/NewStory/src/password.cpp index bd49cbf653..0924037c69 100644 --- a/plugins/NewStory/src/password.cpp +++ b/plugins/NewStory/src/password.cpp @@ -2,83 +2,67 @@ struct PasswordData { - HANDLE hContact; + MCONTACT hContact; int attempt; }; -bool CheckPassword(HANDLE hContact, char *password) +bool CheckPassword(MCONTACT hContact, char *password) { - md5_state_t ms; - md5_byte_t digest[16]; - md5_init(&ms); - md5_append(&ms, (const unsigned char *)password, lstrlenA(password)); - md5_finish(&ms, digest); + mir_md5_state_t ms; + BYTE digest[16]; + mir_md5_init(&ms); + mir_md5_append(&ms, (const unsigned char *)password, lstrlenA(password)); + mir_md5_finish(&ms, digest); DBVARIANT dbv; - DBCONTACTGETSETTING dbcgs; - dbcgs.szModule = MODULENAME; - dbcgs.szSetting = "password"; - dbcgs.pValue = &dbv; - CallService(MS_DB_CONTACT_GETSETTING, (WPARAM)hContact, (LPARAM)&dbcgs); - if (dbv.type != DBVT_BLOB) - { - CallService(MS_DB_CONTACT_FREEVARIANT, 0, (LPARAM)&dbv); + db_get(hContact, MODULENAME, "password", &dbv); + if (dbv.type != DBVT_BLOB) { + db_free(&dbv); return true; - } else - { - if (dbv.cpbVal != 16) - { - CallService(MS_DB_CONTACT_FREEVARIANT, 0, (LPARAM)&dbv); + } + else { + if (dbv.cpbVal != 16) { + db_free(&dbv); return false; } - for (int i = 0; i < 16; i++) - if (dbv.pbVal[i] != digest[i]) - { - CallService(MS_DB_CONTACT_FREEVARIANT, 0, (LPARAM)&dbv); + for (int i = 0; i < 16; i++) { + if (dbv.pbVal[i] != digest[i]) { + db_free(&dbv); return false; } + } - CallService(MS_DB_CONTACT_FREEVARIANT, 0, (LPARAM)&dbv); + db_free(&dbv); return true; } } -void SetPassword(HANDLE hContact, char *password) +void SetPassword(MCONTACT hContact, char *password) { - if (!password || !*password) - { - DBCONTACTGETSETTING dbcgs; - dbcgs.szModule = MODULENAME; - dbcgs.szSetting = "password"; - CallService(MS_DB_CONTACT_DELETESETTING, (WPARAM)hContact, (LPARAM)&dbcgs); + if (!password || !*password) { + db_unset(hContact, MODULENAME, "password"); return; } - md5_state_t ms; - md5_byte_t digest[16]; - md5_init(&ms); - md5_append(&ms, (const unsigned char *)password, lstrlenA(password)); - md5_finish(&ms, digest); + mir_md5_state_t ms; + BYTE digest[16]; + mir_md5_init(&ms); + mir_md5_append(&ms, (const unsigned char *)password, lstrlenA(password)); + mir_md5_finish(&ms, digest); - DBCONTACTWRITESETTING dbcws; - dbcws.szModule = MODULENAME; - dbcws.szSetting = "password"; - dbcws.value.type = DBVT_BLOB; - dbcws.value.cpbVal = 16; - dbcws.value.pbVal = (PBYTE)digest; - CallService(MS_DB_CONTACT_WRITESETTING, (WPARAM)hContact, (LPARAM)&dbcws); + db_set_blob(hContact, MODULENAME, "password", (PBYTE)digest, 16); } int CALLBACK PasswordDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { PasswordData *data = (PasswordData *)GetWindowLong(hwnd, GWL_USERDATA); - switch (msg) + switch (msg) { case WM_INITDIALOG: { data = new PasswordData; data->attempt = 0; - data->hContact = (HANDLE)lParam; + data->hContact = (MCONTACT)lParam; SetWindowLong(hwnd, GWL_USERDATA, (LONG)data); RECT rc, rcMe; @@ -148,22 +132,17 @@ int CALLBACK PasswordDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) return FALSE; } -bool AskPassword(HANDLE hContact) +bool AskPassword(MCONTACT hContact) { DBVARIANT dbv; - DBCONTACTGETSETTING dbcgs; - dbcgs.szModule = MODULENAME; - dbcgs.szSetting = "password"; - dbcgs.pValue = &dbv; - CallService(MS_DB_CONTACT_GETSETTING, (WPARAM)hContact, (LPARAM)&dbcgs); - if (dbv.type != DBVT_BLOB) - { - CallService(MS_DB_CONTACT_FREEVARIANT, 0, (LPARAM)&dbv); + db_get(hContact, MODULENAME, "password", &dbv); + if (dbv.type != DBVT_BLOB) { + db_free(&dbv); return true; } - CallService(MS_DB_CONTACT_FREEVARIANT, 0, (LPARAM)&dbv); + db_free(&dbv); - if (DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_PASSWORD), 0, PasswordDlgProc, (LPARAM)hContact)) + if (DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_PASSWORD), 0, PasswordDlgProc, (LPARAM)hContact)) return true; return false; } @@ -171,12 +150,12 @@ bool AskPassword(HANDLE hContact) int CALLBACK ChangePasswordDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - HANDLE hContact = (HANDLE)GetWindowLong(hwnd, GWL_USERDATA); + MCONTACT hContact = (MCONTACT)GetWindowLong(hwnd, GWL_USERDATA); switch (msg) { case WM_INITDIALOG: { - hContact = (HANDLE)lParam; + hContact = (MCONTACT)lParam; SetWindowLong(hwnd, GWL_USERDATA, (LONG)hContact); // RECT rc, rcMe; @@ -254,5 +233,5 @@ int CALLBACK ChangePasswordDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP void ChangePassword(HWND hwnd, HANDLE hContact) { - DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_CHANGEPASSWORD), hwnd, ChangePasswordDlgProc, (LPARAM)hContact); + DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CHANGEPASSWORD), hwnd, ChangePasswordDlgProc, (LPARAM)hContact); } diff --git a/plugins/NewStory/src/password.h b/plugins/NewStory/src/password.h index 592cf137ec..60dfc1b3df 100644 --- a/plugins/NewStory/src/password.h +++ b/plugins/NewStory/src/password.h @@ -1,8 +1,8 @@ #ifndef __password_h__ #define __password_h__ -bool CheckPassword(HANDLE hContact, char *password); -bool AskPassword(HANDLE hContact); -void ChangePassword(HWND hwnd, HANDLE hContact); +bool CheckPassword(MCONTACT hContact, char *password); +bool AskPassword(MCONTACT hContact); +void ChangePassword(HWND hwnd, MCONTACT hContact); #endif // __password_h__
\ No newline at end of file diff --git a/plugins/NewStory/src/stdafx.h b/plugins/NewStory/src/stdafx.h index c5e790b543..b9e774aa86 100644 --- a/plugins/NewStory/src/stdafx.h +++ b/plugins/NewStory/src/stdafx.h @@ -48,6 +48,7 @@ Boston, MA 02111-1307, USA. #include "m_userinfo.h" #include "m_icolib.h" #include "m_fontservice.h" +#include "m_text.h" #include "m_smileyadd.h" //#include "m_nconvers.h" diff --git a/plugins/NewStory/src/templates.cpp b/plugins/NewStory/src/templates.cpp index 461bbce7fb..199b009458 100644 --- a/plugins/NewStory/src/templates.cpp +++ b/plugins/NewStory/src/templates.cpp @@ -19,7 +19,7 @@ void vfAdded(int mode, TemplateVars *vars, MCONTACT hContact, HistoryArray::Item void vfDeleted(int mode, TemplateVars *vars, MCONTACT hContact, HistoryArray::ItemData *item); void vfOther(int mode, TemplateVars *vars, MCONTACT hContact, HistoryArray::ItemData *item); -TemplateInfo templates[TPL_COUNT] = +TemplateInfo templates[TPL_COUNT] = { { "tpl/interface/title", _T("Interface"), ICO_NEWSTORY, _T("Window Title"), _T("%N's Newstory [%c messages total]"), 0, 0, @@ -85,14 +85,15 @@ void LoadTemplates() { for (int i = 0; i < TPL_COUNT; i++) { - DBVARIANT dbv = {0}; + DBVARIANT dbv = { 0 }; db_get_ws(0, MODULENAME, templates[i].setting, &dbv); if (templates[i].value) free(templates[i].value); if (dbv.pwszVal) { templates[i].value = _tcsdup(dbv.pwszVal); - } else + } + else { templates[i].value = 0; } @@ -123,20 +124,21 @@ TCHAR *TplFormatStringEx(int tpl, TCHAR *sztpl, MCONTACT hContact, HistoryArray: if (templates[tpl].vf[i]) templates[tpl].vf[i](VFM_VARS, &vars, hContact, item); - TCHAR *buf = (TCHAR *)malloc(sizeof(TCHAR)*(TplMeasureVars(&vars, sztpl)+1)); + TCHAR *buf = (TCHAR *)malloc(sizeof(TCHAR)*(TplMeasureVars(&vars, sztpl) + 1)); TCHAR *bufptr = buf; for (TCHAR *p = sztpl; *p; p++) { if (*p == '%') { - TCHAR *var = TplGetVar(&vars, (char)(p[1]&0xff)); + TCHAR *var = TplGetVar(&vars, (char)(p[1] & 0xff)); if (var) { lstrcpy(bufptr, var); bufptr += lstrlen(var); } p++; - } else + } + else { *bufptr++ = *p; } @@ -164,20 +166,21 @@ TCHAR *TplFormatString(int tpl, MCONTACT hContact, HistoryArray::ItemData *item) if (templates[tpl].vf[i]) templates[tpl].vf[i](VFM_VARS, &vars, hContact, item); - TCHAR *buf = (TCHAR *)malloc(sizeof(TCHAR)*(TplMeasureVars(&vars, templates[tpl].value)+1)); + TCHAR *buf = (TCHAR *)malloc(sizeof(TCHAR)*(TplMeasureVars(&vars, templates[tpl].value) + 1)); TCHAR *bufptr = buf; for (TCHAR *p = templates[tpl].value; *p; p++) { if (*p == '%') { - TCHAR *var = TplGetVar(&vars, (char)(p[1]&0xff)); + TCHAR *var = TplGetVar(&vars, (char)(p[1] & 0xff)); if (var) { lstrcpy(bufptr, var); bufptr += lstrlen(var); } p++; - } else + } + else { *bufptr++ = *p; } @@ -189,7 +192,7 @@ TCHAR *TplFormatString(int tpl, MCONTACT hContact, HistoryArray::ItemData *item) // Variable management void TplInitVars(TemplateVars *vars) { - for(int i = 0; i < 256; i++) + for (int i = 0; i < 256; i++) { vars->val[i] = 0; vars->del[i] = false; @@ -198,7 +201,7 @@ void TplInitVars(TemplateVars *vars) void TplCleanVars(TemplateVars *vars) { - for(int i = 0; i < 256; i++) + for (int i = 0; i < 256; i++) if (vars->val[i] && vars->del[i]) { free(vars->val[i]); @@ -227,10 +230,11 @@ int TplMeasureVars(TemplateVars *vars, TCHAR *str) { if (*p == '%') { - TCHAR *var = TplGetVar(vars, (char)(p[1]&0xff)); + TCHAR *var = TplGetVar(vars, (char)(p[1] & 0xff)); if (var) res += lstrlen(var); p++; - } else + } + else { res++; } @@ -241,24 +245,24 @@ int TplMeasureVars(TemplateVars *vars, TCHAR *str) // Loading variables void vfGlobal(int mode, TemplateVars *vars, HANDLE hContact, HistoryArray::ItemData *item) { -// %%: simply % character + // %%: simply % character TplSetVar(vars, '%', _T("%"), false); -// %n: line break + // %n: line break TplSetVar(vars, 'n', _T("\x0d\x0a"), false); -// %M: my nick (not for messages) + // %M: my nick (not for messages) wchar_t *buf = Clist_GetContactDisplayName(0, 0); TplSetVar(vars, 'M', buf, false); } void vfContact(int mode, TemplateVars *vars, MCONTACT hContact, HistoryArray::ItemData *item) { -// %N: buddy's nick (not for messages) + // %N: buddy's nick (not for messages) wchar_t *buff = Clist_GetContactDisplayName(hContact, 0); TplSetVar(vars, 'N', buff, false); -// %c: event count + // %c: event count TCHAR *buf = new TCHAR[20]; wsprintf(buf, _T("%d"), db_event_count(hContact)); TplSetVar(vars, 'c', buf, false); @@ -266,10 +270,10 @@ void vfContact(int mode, TemplateVars *vars, MCONTACT hContact, HistoryArray::It void vfSystem(int mode, TemplateVars *vars, MCONTACT hContact, HistoryArray::ItemData *item) { -// %N: buddy's nick (not for messages) + // %N: buddy's nick (not for messages) TplSetVar(vars, 'N', /*TranslateTS*/_T("System Event"), false); -// %c: event count + // %c: event count TCHAR *buf = new TCHAR[20]; wsprintf(buf, _T("%d"), db_event_count(hContact)); TplSetVar(vars, 'c', buf, false); @@ -280,119 +284,121 @@ void vfEvent(int mode, TemplateVars *vars, MCONTACT hContact, HistoryArray::Item HICON hIcon; TCHAR *s; -// %U: UIN (contextual, own uin for sent, buddys UIN for received messages) + // %U: UIN (contextual, own uin for sent, buddys UIN for received messages) -// %N: Nickname + // %N: Nickname wchar_t *buff = Clist_GetContactDisplayName(item->dbe.flags&DBEF_SENT ? 0 : (WPARAM)item->hContact, 0); TplSetVar(vars, 'N', buff, false); -// %I: Icon + // %I: Icon switch (item->dbe.eventType) { - case EVENTTYPE_MESSAGE: - hIcon = icons[ICO_SENDMSG].hIcon; - break; - case EVENTTYPE_FILE: - hIcon = icons[ICO_FILE].hIcon; - break; - case EVENTTYPE_URL: - hIcon = icons[ICO_URL].hIcon; - break; - case EVENTTYPE_STATUSCHANGE: - hIcon = icons[ICO_SIGNIN].hIcon; - break; - default: - hIcon = icons[ICO_UNKNOWN].hIcon; - break; + case EVENTTYPE_MESSAGE: + hIcon = GetIcon(ICO_SENDMSG); + break; + case EVENTTYPE_FILE: + hIcon = GetIcon(ICO_FILE); + break; + case EVENTTYPE_URL: + hIcon = GetIcon(ICO_URL); + break; + case EVENTTYPE_STATUSCHANGE: + hIcon = GetIcon(ICO_SIGNIN); + break; + default: + hIcon = GetIcon(ICO_UNKNOWN); + break; } - s = (TCHAR *)calloc(64,sizeof(TCHAR)); + s = (TCHAR *)calloc(64, sizeof(TCHAR)); wsprintf(s, _T("[$hicon=%d$]"), hIcon); TplSetVar(vars, 'I', s, true); -// %i: Direction icon + // %i: Direction icon if (item->dbe.flags & DBEF_SENT) { - hIcon = icons[ICO_MSGOUT].hIcon; - } else + hIcon = GetIcon(ICO_MSGOUT); + } + else { - hIcon = icons[ICO_MSGIN].hIcon; + hIcon = GetIcon(ICO_MSGIN); } - s = (TCHAR *)calloc(64,sizeof(TCHAR)); + s = (TCHAR *)calloc(64, sizeof(TCHAR)); wsprintf(s, _T("[$hicon=%d$]"), hIcon); TplSetVar(vars, 'i', s, true); -// %D: direction symbol + // %D: direction symbol if (item->dbe.flags & DBEF_SENT) { TplSetVar(vars, 'D', _T("<<"), false); - } else + } + else { TplSetVar(vars, 'D', _T(">>"), false); } -// %t: timestamp + // %t: timestamp TCHAR *buf = (TCHAR *)calloc(100, sizeof(TCHAR)); _tcsftime(buf, 100, _T("%d.%m.%Y, %H:%M"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 't', buf, true); -// DBTIMETOSTRING tts; -// tts.cbDest = 100; -// tts.szFormat = "d, t"; -// tts.szDest = (char *)calloc(100, 1); -// CallService(MS_DB_TIME_TIMESTAMPTOSTRING, item->dbe.timestamp, (LPARAM)&tts); -// TplSetVar(vars, 't', tts.szDest, true); + // DBTIMETOSTRING tts; + // tts.cbDest = 100; + // tts.szFormat = "d, t"; + // tts.szDest = (char *)calloc(100, 1); + // CallService(MS_DB_TIME_TIMESTAMPTOSTRING, item->dbe.timestamp, (LPARAM)&tts); + // TplSetVar(vars, 't', tts.szDest, true); -// tts.szFormat = ""; -// tts.szDest = (char *)calloc(100, 1); -// CallService(MS_DB_TIME_TIMESTAMPTOSTRING, item->dbe.timestamp, (LPARAM)&tts); -// TplSetVar(vars, 't', tts.szDest, true); + // tts.szFormat = ""; + // tts.szDest = (char *)calloc(100, 1); + // CallService(MS_DB_TIME_TIMESTAMPTOSTRING, item->dbe.timestamp, (LPARAM)&tts); + // TplSetVar(vars, 't', tts.szDest, true); -// %h: hour (24 hour format, 0-23) + // %h: hour (24 hour format, 0-23) buf = (TCHAR *)calloc(5, sizeof(TCHAR)); _tcsftime(buf, 5, _T("%H"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 'h', buf, true); -// %a: hour (12 hour format) + // %a: hour (12 hour format) buf = (TCHAR *)calloc(5, sizeof(TCHAR)); _tcsftime(buf, 5, _T("%h"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 'a', buf, true); -// %m: minute + // %m: minute buf = (TCHAR *)calloc(5, sizeof(TCHAR)); _tcsftime(buf, 5, _T("%M"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 'm', buf, true); -// %s: second + // %s: second buf = (TCHAR *)calloc(5, sizeof(TCHAR)); _tcsftime(buf, 5, _T("%S"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 's', buf, true); -// %o: month + // %o: month buf = (TCHAR *)calloc(5, sizeof(TCHAR)); _tcsftime(buf, 5, _T("%m"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 'o', buf, true); -// %d: day of month + // %d: day of month buf = (TCHAR *)calloc(5, sizeof(TCHAR)); _tcsftime(buf, 5, _T("%d"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 'd', buf, true); -// %y: year + // %y: year buf = (TCHAR *)calloc(5, sizeof(TCHAR)); _tcsftime(buf, 5, _T("%Y"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 'y', buf, true); -// %w: day of week (Sunday, Monday.. translateable) + // %w: day of week (Sunday, Monday.. translateable) buf = (TCHAR *)calloc(25, sizeof(TCHAR)); _tcsftime(buf, 25, _T("%A"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 'w', TranslateW(buf), false); -// %p: AM/PM symbol + // %p: AM/PM symbol buf = (TCHAR *)calloc(5, sizeof(TCHAR)); _tcsftime(buf, 5, _T("%p"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 'p', buf, true); -// %O: Name of month, translateable + // %O: Name of month, translateable buf = (TCHAR *)calloc(25, sizeof(TCHAR)); _tcsftime(buf, 25, _T("%B"), localtime((time_t *)&item->dbe.timestamp)); TplSetVar(vars, 'O', TranslateW(buf), false); @@ -400,54 +406,54 @@ void vfEvent(int mode, TemplateVars *vars, MCONTACT hContact, HistoryArray::Item void vfMessage(int mode, TemplateVars *vars, HANDLE hContact, HistoryArray::ItemData *item) { -// %M: the message string itself + // %M: the message string itself TplSetVar(vars, 'M', item->getTBuf(), false); } void vfFile(int mode, TemplateVars *vars, HANDLE hContact, HistoryArray::ItemData *item) { -// %M: the message string itself + // %M: the message string itself TplSetVar(vars, 'M', item->getTBuf(), false); -// TplSetVar(vars, 'M', _T("File event"), false); + // TplSetVar(vars, 'M', _T("File event"), false); } void vfUrl(int mode, TemplateVars *vars, HANDLE hContact, HistoryArray::ItemData *item) { -// %M: the message string itself + // %M: the message string itself TplSetVar(vars, 'M', item->getTBuf(), false); -// TplSetVar(vars, 'M', _T("URL Event"), false); + // TplSetVar(vars, 'M', _T("URL Event"), false); } void vfSign(int mode, TemplateVars *vars, HANDLE hContact, HistoryArray::ItemData *item) { -// %M: the message string itself + // %M: the message string itself TplSetVar(vars, 'M', item->getTBuf(), false); } void vfAuth(int mode, TemplateVars *vars, HANDLE hContact, HistoryArray::ItemData *item) { -// %M: the message string itself + // %M: the message string itself TplSetVar(vars, 'M', item->getTBuf(), false); -// TplSetVar(vars, 'M', _T("Auth Rq"), false); + // TplSetVar(vars, 'M', _T("Auth Rq"), false); } void vfAdded(int mode, TemplateVars *vars, HANDLE hContact, HistoryArray::ItemData *item) { -// %M: the message string itself + // %M: the message string itself TplSetVar(vars, 'M', item->getTBuf(), false); -// TplSetVar(vars, 'M', _T("Added"), false); + // TplSetVar(vars, 'M', _T("Added"), false); } void vfDeleted(int mode, TemplateVars *vars, HANDLE hContact, HistoryArray::ItemData *item) { -// %M: the message string itself + // %M: the message string itself TplSetVar(vars, 'M', item->getTBuf(), false); -// TplSetVar(vars, 'M', _T("Deleted"), false); + // TplSetVar(vars, 'M', _T("Deleted"), false); } void vfOther(int mode, TemplateVars *vars, HANDLE hContact, HistoryArray::ItemData *item) { -// %M: the message string itself + // %M: the message string itself TplSetVar(vars, 'M', _T("Unknown Event"), false); } @@ -458,257 +464,262 @@ BOOL CALLBACK OptTemplatesDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa static int CurrentTemplate; switch (msg) { - case WM_INITDIALOG: - { - CurrentTemplate = -1; + case WM_INITDIALOG: + { + CurrentTemplate = -1; - HTREEITEM hGroup = 0; - HTREEITEM hFirst = 0; + HTREEITEM hGroup = 0; + HTREEITEM hFirst = 0; - HIMAGELIST himgTree = ImageList_Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON), ILC_COLOR32 | ILC_MASK,1,1); - TreeView_SetImageList(GetDlgItem(hwnd, IDC_TEMPLATES), himgTree, TVSIL_NORMAL); + HIMAGELIST himgTree = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR32 | ILC_MASK, 1, 1); + TreeView_SetImageList(GetDlgItem(hwnd, IDC_TEMPLATES), himgTree, TVSIL_NORMAL); - ImageList_AddIcon(himgTree, icons[ICO_TPLGROUP].hIcon); + ImageList_AddIcon(himgTree, GetIcon(ICO_TPLGROUP)); - for (int i = 0; i < TPL_COUNT; i++) + for (int i = 0; i < TPL_COUNT; i++) + { + if (!i || lstrcmp(templates[i].group, templates[i - 1].group)) { - if (!i || lstrcmp(templates[i].group, templates[i-1].group)) - { - if (hGroup) - TreeView_Expand(GetDlgItem(hwnd, IDC_TEMPLATES), hGroup, TVE_EXPAND); - - TVINSERTSTRUCT tvis; - tvis.hParent = 0; - tvis.hInsertAfter = TVI_LAST; - tvis.item.mask = TVIF_TEXT|TVIF_STATE|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE; - tvis.item.state = tvis.item.stateMask = TVIS_BOLD; - tvis.item.iSelectedImage = tvis.item.iImage = 0; - tvis.item.pszText = templates[i].group; - tvis.item.lParam = -1; - hGroup = TreeView_InsertItem(GetDlgItem(hwnd, IDC_TEMPLATES), &tvis); - - if (!hFirst) hFirst = hGroup; - } + if (hGroup) + TreeView_Expand(GetDlgItem(hwnd, IDC_TEMPLATES), hGroup, TVE_EXPAND); TVINSERTSTRUCT tvis; - tvis.hParent = hGroup; + tvis.hParent = 0; tvis.hInsertAfter = TVI_LAST; - tvis.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE; - tvis.item.pszText = templates[i].title; - tvis.item.iSelectedImage = tvis.item.iImage = - ImageList_AddIcon(himgTree, icons[templates[i].icon].hIcon); - tvis.item.lParam = i; - TreeView_InsertItem(GetDlgItem(hwnd, IDC_TEMPLATES), &tvis); + tvis.item.mask = TVIF_TEXT | TVIF_STATE | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + tvis.item.state = tvis.item.stateMask = TVIS_BOLD; + tvis.item.iSelectedImage = tvis.item.iImage = 0; + tvis.item.pszText = templates[i].group; + tvis.item.lParam = -1; + hGroup = TreeView_InsertItem(GetDlgItem(hwnd, IDC_TEMPLATES), &tvis); + + if (!hFirst) hFirst = hGroup; } - if (hGroup) - TreeView_Expand(GetDlgItem(hwnd, IDC_TEMPLATES), hGroup, TVE_EXPAND); + TVINSERTSTRUCT tvis; + tvis.hParent = hGroup; + tvis.hInsertAfter = TVI_LAST; + tvis.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + tvis.item.pszText = templates[i].title; + tvis.item.iSelectedImage = tvis.item.iImage = + ImageList_AddIcon(himgTree, GetIcon(templates[i].icon)); + tvis.item.lParam = i; + TreeView_InsertItem(GetDlgItem(hwnd, IDC_TEMPLATES), &tvis); + } - TreeView_SelectItem(GetDlgItem(hwnd, IDC_TEMPLATES), hFirst); - TreeView_EnsureVisible(GetDlgItem(hwnd, IDC_TEMPLATES), hFirst); + if (hGroup) + TreeView_Expand(GetDlgItem(hwnd, IDC_TEMPLATES), hGroup, TVE_EXPAND); - SendMessage(GetDlgItem(hwnd, IDC_DISCARD), BUTTONSETASFLATBTN, 0, 0); - SendMessage(GetDlgItem(hwnd, IDC_UPDATEPREVIEW), BUTTONSETASFLATBTN, 0, 0); - SendMessage(GetDlgItem(hwnd, IDC_VARHELP), BUTTONSETASFLATBTN, 0, 0); + TreeView_SelectItem(GetDlgItem(hwnd, IDC_TEMPLATES), hFirst); + TreeView_EnsureVisible(GetDlgItem(hwnd, IDC_TEMPLATES), hFirst); - SendMessage(GetDlgItem(hwnd, IDC_DISCARD), BUTTONADDTOOLTIP, (WPARAM)Translate("Cancel Edit"), 0); - SendMessage(GetDlgItem(hwnd, IDC_UPDATEPREVIEW), BUTTONADDTOOLTIP, (WPARAM)Translate("Update Preview"), 0); - SendMessage(GetDlgItem(hwnd, IDC_VARHELP), BUTTONADDTOOLTIP, (WPARAM)Translate("Help on Variables"), 0); + SendMessage(GetDlgItem(hwnd, IDC_DISCARD), BUTTONSETASFLATBTN, 0, 0); + SendMessage(GetDlgItem(hwnd, IDC_UPDATEPREVIEW), BUTTONSETASFLATBTN, 0, 0); + SendMessage(GetDlgItem(hwnd, IDC_VARHELP), BUTTONSETASFLATBTN, 0, 0); - SendMessage(GetDlgItem(hwnd, IDC_DISCARD), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_RESET].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_UPDATEPREVIEW), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_PREVIEW].hIcon); - SendMessage(GetDlgItem(hwnd, IDC_VARHELP), BM_SETIMAGE, IMAGE_ICON, (LPARAM)icons[ICO_VARHELP].hIcon); + SendMessage(GetDlgItem(hwnd, IDC_DISCARD), BUTTONADDTOOLTIP, (WPARAM)Translate("Cancel Edit"), 0); + SendMessage(GetDlgItem(hwnd, IDC_UPDATEPREVIEW), BUTTONADDTOOLTIP, (WPARAM)Translate("Update Preview"), 0); + SendMessage(GetDlgItem(hwnd, IDC_VARHELP), BUTTONADDTOOLTIP, (WPARAM)Translate("Help on Variables"), 0); + + SendMessage(GetDlgItem(hwnd, IDC_DISCARD), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_RESET)); + SendMessage(GetDlgItem(hwnd, IDC_UPDATEPREVIEW), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_PREVIEW)); + SendMessage(GetDlgItem(hwnd, IDC_VARHELP), BM_SETIMAGE, IMAGE_ICON, (LPARAM)GetIcon(ICO_VARHELP)); + + return TRUE; + } + + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDC_EDITTEMPLATE: + { + SendMessage(GetParent(GetParent(hwnd)), PSM_CHANGED, 0, 0); + } - return TRUE; + case IDC_UPDATEPREVIEW: + { + if (templates[CurrentTemplate].tmpValue) + free(templates[CurrentTemplate].tmpValue); + int length = GetWindowTextLength(GetDlgItem(hwnd, IDC_EDITTEMPLATE)) + 1; + templates[CurrentTemplate].tmpValue = (TCHAR *)malloc(length * sizeof(TCHAR)); + GetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[CurrentTemplate].tmpValue, length); + + HistoryArray::ItemData item; + item.hContact = db_find_first(); + while (item.hContact && !item.hEvent) + { + item.hEvent = db_event_first(item.hContact); + if (!item.hEvent) + item.hContact = db_find_next(item.hContact); + } + if (item.hContact && item.hEvent) + { + item.load(ELM_DATA); + TCHAR *preview = TplFormatStringEx(CurrentTemplate, templates[CurrentTemplate].tmpValue, item.hContact, &item); + SetWindowText(GetDlgItem(hwnd, IDC_PREVIEW), preview); + // SetWindowText(GetDlgItem(hwnd, IDC_GPREVIEW), preview); + SetWindowText(GetDlgItem(hwnd, IDC_GPREVIEW), _T("$hit :)")); + free(preview); + } + else + { + SetWindowText(GetDlgItem(hwnd, IDC_PREVIEW), _T("")); + SetWindowText(GetDlgItem(hwnd, IDC_GPREVIEW), _T("")); + } + break; } - case WM_COMMAND: - switch (LOWORD(wParam)) + case IDC_DISCARD: + { + if (templates[CurrentTemplate].tmpValue) + free(templates[CurrentTemplate].tmpValue); + templates[CurrentTemplate].tmpValue = 0; + if (templates[CurrentTemplate].value) { - case IDC_EDITTEMPLATE: - { - SendMessage(GetParent(GetParent(hwnd)), PSM_CHANGED, 0, 0); - } + SetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[CurrentTemplate].value); + } + else + { + SetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[CurrentTemplate].defvalue); + } + PostMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_UPDATEPREVIEW, 0), 0); + break; + } + } + break; - case IDC_UPDATEPREVIEW: + case WM_NOTIFY: + switch (((LPNMHDR)lParam)->idFrom) + { + case 0: + { + switch (((LPNMHDR)lParam)->code) + { + case PSN_RESET: + { + for (int i = 0; i < TPL_COUNT; i++) { - if (templates[CurrentTemplate].tmpValue) - free(templates[CurrentTemplate].tmpValue); - int length = GetWindowTextLength(GetDlgItem(hwnd, IDC_EDITTEMPLATE))+1; - templates[CurrentTemplate].tmpValue = (TCHAR *)malloc(length*sizeof(TCHAR)); - GetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[CurrentTemplate].tmpValue, length); - - HistoryArray::ItemData item; - item.hContact = db_find_first(); - while (item.hContact && !item.hEvent) + if (templates[i].tmpValue) { - item.hEvent = db_event_first(item.hContact); - if (!item.hEvent) - item.hContact = db_find_next(item.hContact); + if (templates[i].tmpValue) + free(templates[i].tmpValue); } - if (item.hContact && item.hEvent) - { - item.load(ELM_DATA); - TCHAR *preview = TplFormatStringEx(CurrentTemplate, templates[CurrentTemplate].tmpValue, item.hContact, &item); - SetWindowText(GetDlgItem(hwnd, IDC_PREVIEW), preview); -// SetWindowText(GetDlgItem(hwnd, IDC_GPREVIEW), preview); - SetWindowText(GetDlgItem(hwnd, IDC_GPREVIEW), _T("$hit :)")); - free(preview); - } else + } + return TRUE; + } + + case PSN_APPLY: + { + for (int i = 0; i < TPL_COUNT; i++) + { + if (templates[i].tmpValue) { - SetWindowText(GetDlgItem(hwnd, IDC_PREVIEW), _T("")); - SetWindowText(GetDlgItem(hwnd, IDC_GPREVIEW), _T("")); + if (templates[i].value) + free(templates[i].value); + templates[i].value = templates[i].tmpValue; + templates[i].tmpValue = 0; } + } + SaveTemplates(); + return TRUE; + } + } + break; + } + + case IDC_TEMPLATES: + { + switch (((LPNMHDR)lParam)->code) + { + case TVN_SELCHANGED: + case TVN_SELCHANGING: + { + LPNMTREEVIEW lpnmtv = (LPNMTREEVIEW)lParam; + + TVITEM tvi; + tvi.hItem = TreeView_GetSelection(GetDlgItem(hwnd, IDC_TEMPLATES)); + tvi.mask = TVIF_PARAM; + TreeView_GetItem(GetDlgItem(hwnd, IDC_TEMPLATES), &tvi); + + if ((tvi.lParam < 0) || (tvi.lParam >= TPL_COUNT)) + { + EnableWindow(GetDlgItem(hwnd, IDC_EDITTEMPLATE), FALSE); + EnableWindow(GetDlgItem(hwnd, IDC_GPREVIEW), FALSE); + EnableWindow(GetDlgItem(hwnd, IDC_PREVIEW), FALSE); + EnableWindow(GetDlgItem(hwnd, IDC_DISCARD), FALSE); + EnableWindow(GetDlgItem(hwnd, IDC_UPDATEPREVIEW), FALSE); + EnableWindow(GetDlgItem(hwnd, IDC_VARHELP), FALSE); + /* HTREEITEM hItem = TreeView_GetChild(GetDlgItem(hwnd, IDC_TEMPLATES), tvi.hItem); + if (hItem) + { + TreeView_Expand(GetDlgItem(hwnd, IDC_TEMPLATES), tvi.hItem, TVE_EXPAND); + TreeView_SelectItem(GetDlgItem(hwnd, IDC_TEMPLATES), hItem); + }*/ break; } + else + { + EnableWindow(GetDlgItem(hwnd, IDC_EDITTEMPLATE), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_GPREVIEW), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_PREVIEW), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_DISCARD), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_UPDATEPREVIEW), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_VARHELP), TRUE); + } + + if ((lpnmtv->itemOld.mask&TVIF_HANDLE) && lpnmtv->itemOld.hItem && (lpnmtv->itemOld.hItem != lpnmtv->itemNew.hItem) && (lpnmtv->itemOld.lParam >= 0) && (lpnmtv->itemOld.lParam < TPL_COUNT)) + { + if (templates[lpnmtv->itemOld.lParam].tmpValue) + free(templates[lpnmtv->itemOld.lParam].tmpValue); + int length = GetWindowTextLength(GetDlgItem(hwnd, IDC_EDITTEMPLATE)) + 1; + templates[lpnmtv->itemOld.lParam].tmpValue = (TCHAR *)malloc(length * sizeof(TCHAR)); + GetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[lpnmtv->itemOld.lParam].tmpValue, length); + } + + CurrentTemplate = tvi.lParam; - case IDC_DISCARD: + if (templates[CurrentTemplate].tmpValue) { - if (templates[CurrentTemplate].tmpValue) - free(templates[CurrentTemplate].tmpValue); - templates[CurrentTemplate].tmpValue = 0; + SetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[CurrentTemplate].tmpValue); + } + else if (templates[CurrentTemplate].value) { SetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[CurrentTemplate].value); - } else + } + else { SetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[CurrentTemplate].defvalue); } - PostMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_UPDATEPREVIEW,0), 0); - break; - } - } - break; - case WM_NOTIFY: - switch(((LPNMHDR)lParam)->idFrom) + PostMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_UPDATEPREVIEW, 0), 0); + + break; + } + case TVN_KEYDOWN: + case NM_CLICK: { - case 0: - { - switch (((LPNMHDR)lParam)->code) - { - case PSN_RESET: - { - for (int i = 0; i < TPL_COUNT; i++) - { - if (templates[i].tmpValue) - { - if (templates[i].tmpValue) - free(templates[i].tmpValue); - } - } - return TRUE; - } - - case PSN_APPLY: - { - for (int i = 0; i < TPL_COUNT; i++) - { - if (templates[i].tmpValue) - { - if (templates[i].value) - free(templates[i].value); - templates[i].value = templates[i].tmpValue; - templates[i].tmpValue = 0; - } - } - SaveTemplates(); - return TRUE; - } - } - break; - } + SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); + break; + } - case IDC_TEMPLATES: - { - switch (((LPNMHDR)lParam)->code) - { - case TVN_SELCHANGED: - case TVN_SELCHANGING: - { - LPNMTREEVIEW lpnmtv = (LPNMTREEVIEW)lParam; - - TVITEM tvi; - tvi.hItem = TreeView_GetSelection(GetDlgItem(hwnd, IDC_TEMPLATES)); - tvi.mask = TVIF_PARAM; - TreeView_GetItem(GetDlgItem(hwnd, IDC_TEMPLATES), &tvi); - - if ((tvi.lParam < 0) || (tvi.lParam >= TPL_COUNT)) - { - EnableWindow(GetDlgItem(hwnd, IDC_EDITTEMPLATE), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_GPREVIEW), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_PREVIEW), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_DISCARD), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_UPDATEPREVIEW), FALSE); - EnableWindow(GetDlgItem(hwnd, IDC_VARHELP), FALSE); -/* HTREEITEM hItem = TreeView_GetChild(GetDlgItem(hwnd, IDC_TEMPLATES), tvi.hItem); - if (hItem) - { - TreeView_Expand(GetDlgItem(hwnd, IDC_TEMPLATES), tvi.hItem, TVE_EXPAND); - TreeView_SelectItem(GetDlgItem(hwnd, IDC_TEMPLATES), hItem); - }*/ - break; - } else - { - EnableWindow(GetDlgItem(hwnd, IDC_EDITTEMPLATE), TRUE); - EnableWindow(GetDlgItem(hwnd, IDC_GPREVIEW), TRUE); - EnableWindow(GetDlgItem(hwnd, IDC_PREVIEW), TRUE); - EnableWindow(GetDlgItem(hwnd, IDC_DISCARD), TRUE); - EnableWindow(GetDlgItem(hwnd, IDC_UPDATEPREVIEW), TRUE); - EnableWindow(GetDlgItem(hwnd, IDC_VARHELP), TRUE); - } - - if ((lpnmtv->itemOld.mask&TVIF_HANDLE) && lpnmtv->itemOld.hItem && (lpnmtv->itemOld.hItem != lpnmtv->itemNew.hItem) && (lpnmtv->itemOld.lParam >= 0) && (lpnmtv->itemOld.lParam < TPL_COUNT)) - { - if (templates[lpnmtv->itemOld.lParam].tmpValue) - free(templates[lpnmtv->itemOld.lParam].tmpValue); - int length = GetWindowTextLength(GetDlgItem(hwnd, IDC_EDITTEMPLATE))+1; - templates[lpnmtv->itemOld.lParam].tmpValue = (TCHAR *)malloc(length*sizeof(TCHAR)); - GetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[lpnmtv->itemOld.lParam].tmpValue, length); - } - - CurrentTemplate = tvi.lParam; - - if (templates[CurrentTemplate].tmpValue) - { - SetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[CurrentTemplate].tmpValue); - } else - if (templates[CurrentTemplate].value) - { - SetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[CurrentTemplate].value); - } else - { - SetWindowText(GetDlgItem(hwnd, IDC_EDITTEMPLATE), templates[CurrentTemplate].defvalue); - } - - PostMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_UPDATEPREVIEW,0), 0); - - break; - } - case TVN_KEYDOWN: - case NM_CLICK: - { - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - break; - } - -/* - { - TVHITTESTINFO hti; - hti.pt.x = (short)LOWORD(GetMessagePos()); - hti.pt.y = (short)HIWORD(GetMessagePos()); - ScreenToClient(((LPNMHDR)lParam)->hwndFrom,&hti.pt); - if(TreeView_HitTest(((LPNMHDR)lParam)->hwndFrom,&hti)) - if(hti.flags&TVHT_ONITEMSTATEICON) - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - } -*/ + /* + { + TVHITTESTINFO hti; + hti.pt.x = (short)LOWORD(GetMessagePos()); + hti.pt.y = (short)HIWORD(GetMessagePos()); + ScreenToClient(((LPNMHDR)lParam)->hwndFrom,&hti.pt); + if(TreeView_HitTest(((LPNMHDR)lParam)->hwndFrom,&hti)) + if(hti.flags&TVHT_ONITEMSTATEICON) + SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); + } + */ - } - break; - } } break; + } + } + break; } return FALSE; } diff --git a/plugins/NewStory/src/templates.h b/plugins/NewStory/src/templates.h index 93916bec29..2b703619f3 100644 --- a/plugins/NewStory/src/templates.h +++ b/plugins/NewStory/src/templates.h @@ -68,8 +68,8 @@ extern TemplateInfo templates[TPL_COUNT]; void LoadTemplates(); void SaveTemplates(); -TCHAR *TplFormatString(int tpl, HANDLE hContact, HistoryArray::ItemData *args); -TCHAR *TplFormatStringEx(int tpl, TCHAR *sztpl, HANDLE hContact, HistoryArray::ItemData *args); +TCHAR *TplFormatString(int tpl, MCONTACT hContact, HistoryArray::ItemData *args); +TCHAR *TplFormatStringEx(int tpl, TCHAR *sztpl, MCONTACT hContact, HistoryArray::ItemData *args); BOOL CALLBACK OptTemplatesDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); |