Exemple #1
0
static int TSAPI LoadFromIconLib()
{
	for (int n = 0; n < SIZEOF(ICONBLOCKS); n++)
		for (int i=0; i < ICONBLOCKS[n].nItems; i++)
			*(ICONBLOCKS[n].idesc[i].phIcon) = Skin_GetIcon(ICONBLOCKS[n].idesc[i].szName);

	PluginConfig.g_buttonBarIcons[0] = LoadSkinnedIcon(SKINICON_OTHER_ADDCONTACT);
	PluginConfig.g_buttonBarIcons[1] = LoadSkinnedIcon(SKINICON_OTHER_HISTORY);
	PluginConfig.g_buttonBarIconHandles[0] = LoadSkinnedIconHandle(SKINICON_OTHER_HISTORY);
	PluginConfig.g_buttonBarIconHandles[1] = LoadSkinnedIconHandle(SKINICON_OTHER_ADDCONTACT);
	PluginConfig.g_buttonBarIconHandles[20] = LoadSkinnedIconHandle(SKINICON_OTHER_USERDETAILS);

	PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING] = 
		PluginConfig.g_buttonBarIcons[12] = LoadSkinnedIcon(SKINICON_OTHER_TYPING);
	PluginConfig.g_IconChecked = LoadSkinnedIcon(SKINICON_OTHER_TICK);
	PluginConfig.g_IconUnchecked = LoadSkinnedIcon(SKINICON_OTHER_NOTICK);
	PluginConfig.g_IconFolder = LoadSkinnedIcon(SKINICON_OTHER_GROUPOPEN);

	PluginConfig.g_iconOverlayEnabled = Skin_GetIcon("tabSRMM_overlay_enabled");
	PluginConfig.g_iconOverlayDisabled = Skin_GetIcon("tabSRMM_overlay_disabled");

	PluginConfig.g_iconClock = Skin_GetIcon("tabSRMM_clock_symbol");

	CacheMsgLogIcons();
	M.BroadcastMessage(DM_LOADBUTTONBARICONS, 0, 0);
	return 0;
}
Exemple #2
0
int IconsChanged(WPARAM wParam, LPARAM lParam)
{
	CreateImageList(FALSE);
	CacheMsgLogIcons();
	M.BroadcastMessage(DM_OPTIONSAPPLIED, 0, 0);
	M.BroadcastMessage(DM_UPDATEWINICON, 0, 0);
	return 0;
}
Exemple #3
0
int FontServiceFontsChanged(WPARAM, LPARAM)
{
    PluginConfig.reloadSettings();
    CSkin::initAeroEffect();
    CacheMsgLogIcons();
    CacheLogFonts();
    FreeTabConfig();
    ReloadTabConfig();
    Skin->setupAeroSkins();
    M.BroadcastMessage(DM_OPTIONSAPPLIED, 1, 0);
    return 0;
}
Exemple #4
0
int IcoLibIconsChanged(WPARAM wParam, LPARAM lParam)
{
	LoadFromIconLib();
	CacheMsgLogIcons();
	return 0;
}
Exemple #5
0
int IcoLibIconsChanged(WPARAM, LPARAM)
{
	LoadFromIconLib();
	CacheMsgLogIcons();
	return 0;
}
Exemple #6
0
INT_PTR CALLBACK DlgProcOptions2(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
    case WM_INITDIALOG:
        TranslateDialogDefault(hwndDlg);
        {
            SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN2, UDM_SETRANGE, 0, MAKELONG(5000, 0));
            SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN2, UDM_SETPOS, 0, MAKELONG(db_get_w(NULL, CHAT_MODULE, "LogLimit", 100), 0));
            SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN3, UDM_SETRANGE, 0, MAKELONG(255, 10));
            SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN3, UDM_SETPOS, 0, MAKELONG(M.GetByte(CHAT_MODULE, "NicklistRowDist", 12), 0));
            SetDlgItemText(hwndDlg, IDC_LOGTIMESTAMP, g_Settings.pszTimeStampLog);
            SetDlgItemText(hwndDlg, IDC_TIMESTAMP, g_Settings.pszTimeStamp);
            SetDlgItemText(hwndDlg, IDC_OUTSTAMP, g_Settings.pszOutgoingNick);
            SetDlgItemText(hwndDlg, IDC_INSTAMP, g_Settings.pszIncomingNick);
            CheckDlgButton(hwndDlg, IDC_LOGGING, g_Settings.bLoggingEnabled ? BST_CHECKED : BST_UNCHECKED);
            SetDlgItemText(hwndDlg, IDC_LOGDIRECTORY, g_Settings.pszLogDir);
            Utils::enableDlgControl(hwndDlg, IDC_LOGDIRECTORY, g_Settings.bLoggingEnabled);
            Utils::enableDlgControl(hwndDlg, IDC_FONTCHOOSE, g_Settings.bLoggingEnabled);
            SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN4, UDM_SETRANGE, 0, MAKELONG(10000, 0));
            SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN4, UDM_SETPOS, 0, MAKELONG(db_get_w(NULL, CHAT_MODULE, "LoggingLimit", 100), 0));
            Utils::enableDlgControl(hwndDlg, IDC_LIMIT, g_Settings.bLoggingEnabled);

            TCHAR tszTooltipText[2048];

            mir_sntprintf(tszTooltipText,
                          _T("%s - %s\n%s - %s\n%s - %s\n%s - %s\n\n")
                          _T("%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n\n")
                          _T("%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s"),
                          // contact vars
                          _T("%nick%"), TranslateT("nick of current contact (if defined)"),
                          _T("%proto%"), TranslateT("protocol name of current contact (if defined). Account name is used when protocol supports multiple accounts"),
                          _T("%accountname%"), TranslateT("user-defined account name of current contact (if defined)."),
                          _T("%userid%"), TranslateT("user ID of current contact (if defined). It is like UIN for ICQ, JID for Jabber, etc."),
                          // global vars
                          _T("%miranda_path%"), TranslateT("path to Miranda root folder"),
                          _T("%miranda_profilesdir%"), TranslateT("path to folder containing Miranda profiles"),
                          _T("%miranda_profilename%"), TranslateT("name of current Miranda profile (filename, without extension)"),
                          _T("%miranda_userdata%"), TranslateT("will return parsed string %miranda_profilesdir%\\%miranda_profilename%"),
                          _T("%miranda_logpath%"), TranslateT("will return parsed string %miranda_userdata%\\Logs"),
                          _T("%appdata%"), TranslateT("same as environment variable %APPDATA% for currently logged-on Windows user"),
                          _T("%username%"), TranslateT("username for currently logged-on Windows user"),
                          _T("%mydocuments%"), TranslateT("\"My Documents\" folder for currently logged-on Windows user"),
                          _T("%desktop%"), TranslateT("\"Desktop\" folder for currently logged-on Windows user"),
                          _T("%xxxxxxx%"), TranslateT("any environment variable defined in current Windows session (like %systemroot%, %allusersprofile%, etc.)"),
                          // date/time vars
                          _T("%d%"), TranslateT("day of month, 1-31"),
                          _T("%dd%"), TranslateT("day of month, 01-31"),
                          _T("%m%"), TranslateT("month number, 1-12"),
                          _T("%mm%"), TranslateT("month number, 01-12"),
                          _T("%mon%"), TranslateT("abbreviated month name"),
                          _T("%month%"), TranslateT("full month name"),
                          _T("%yy%"), TranslateT("year without century, 01-99"),
                          _T("%yyyy%"), TranslateT("year with century, 1901-9999"),
                          _T("%wday%"), TranslateT("abbreviated weekday name"),
                          _T("%weekday%"), TranslateT("full weekday name"));
            hPathTip = CreateToolTip(GetDlgItem(hwndDlg, IDC_LOGDIRECTORY), tszTooltipText, TranslateT("Variables"));
        }
        if (hPathTip)
            SetTimer(hwndDlg, 0, 3000, NULL);
        break;

    case WM_COMMAND:
        if ((LOWORD(wParam) == IDC_INSTAMP
                || LOWORD(wParam) == IDC_OUTSTAMP
                || LOWORD(wParam) == IDC_TIMESTAMP
                || LOWORD(wParam) == IDC_LOGLIMIT
                || LOWORD(wParam) == IDC_NICKROW2
                || LOWORD(wParam) == IDC_LOGDIRECTORY
                || LOWORD(wParam) == IDC_LIMIT
                || LOWORD(wParam) == IDC_LOGTIMESTAMP)
                && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()))	return 0;

        // open the base directory for MUC logs, using a standard file selector
        // dialog. Simply allows the user to view what log files are there
        // and possibly delete archived logs.
        switch (LOWORD(wParam)) {
        case IDC_MUC_OPENLOGBASEDIR:
        {
            TCHAR	tszTemp[MAX_PATH + 20];
            _tcsncpy_s(tszTemp, g_Settings.pszLogDir, _TRUNCATE);

            TCHAR *p = tszTemp;
            while (*p && (*p == '\\' || *p == '.'))
                p++;

            if (*p)
                if (TCHAR *p1 = _tcschr(p, '\\'))
                    *p1 = 0;

            TCHAR tszInitialDir[_MAX_DRIVE + _MAX_PATH + 10];
            mir_sntprintf(tszInitialDir, _T("%s%s"), M.getChatLogPath(), p);
            if (!PathFileExists(tszInitialDir))
                _tcsncpy_s(tszInitialDir, M.getChatLogPath(), _TRUNCATE);

            TCHAR	tszReturnName[MAX_PATH];
            tszReturnName[0] = 0;
            mir_sntprintf(tszTemp, _T("%s%c*.*%c%c"), TranslateT("All files"), 0, 0, 0);

            OPENFILENAME ofn = { 0 };
            ofn.lpstrInitialDir = tszInitialDir;
            ofn.lpstrFilter = tszTemp;
            ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400;
            ofn.lpstrFile = tszReturnName;
            ofn.nMaxFile = MAX_PATH;
            ofn.nMaxFileTitle = MAX_PATH;
            ofn.Flags = OFN_HIDEREADONLY | OFN_DONTADDTORECENT;
            ofn.lpstrDefExt = _T("log");
            GetOpenFileName(&ofn);
        }
        break;

        case IDC_FONTCHOOSE:
        {
            TCHAR tszDirectory[MAX_PATH];
            LPMALLOC psMalloc;

            if (SUCCEEDED(CoGetMalloc(1, &psMalloc))) {
                BROWSEINFO bi = { 0 };
                bi.hwndOwner = hwndDlg;
                bi.pszDisplayName = tszDirectory;
                bi.lpszTitle = TranslateT("Select folder");
                bi.ulFlags = BIF_NEWDIALOGSTYLE | BIF_EDITBOX | BIF_RETURNONLYFSDIRS;
                bi.lpfn = BrowseCallbackProc;
                bi.lParam = (LPARAM)tszDirectory;

                LPITEMIDLIST idList = SHBrowseForFolder(&bi);
                if (idList) {
                    const TCHAR *szUserDir = M.getUserDir();
                    SHGetPathFromIDList(idList, tszDirectory);
                    mir_tstrcat(tszDirectory, _T("\\"));

                    TCHAR tszTemp[MAX_PATH];
                    PathToRelativeT(tszDirectory, tszTemp, szUserDir);
                    SetDlgItemText(hwndDlg, IDC_LOGDIRECTORY, mir_tstrlen(tszTemp) > 1 ? tszTemp : DEFLOGFILENAME);
                }
                psMalloc->Free(idList);
                psMalloc->Release();
            }
        }
        break;

        case IDC_LOGGING:
            Utils::enableDlgControl(hwndDlg, IDC_LOGDIRECTORY, IsDlgButtonChecked(hwndDlg, IDC_LOGGING) == BST_CHECKED ? TRUE : FALSE);
            Utils::enableDlgControl(hwndDlg, IDC_FONTCHOOSE, IsDlgButtonChecked(hwndDlg, IDC_LOGGING) == BST_CHECKED ? TRUE : FALSE);
            Utils::enableDlgControl(hwndDlg, IDC_LIMIT, IsDlgButtonChecked(hwndDlg, IDC_LOGGING) == BST_CHECKED ? TRUE : FALSE);
            break;
        }

        if (lParam != 0)
            SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
        break;

    case WM_NOTIFY:
        if (((LPNMHDR)lParam)->idFrom == 0 && ((LPNMHDR)lParam)->code == PSN_APPLY) {
            char *pszText = NULL;

            int iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_LOGDIRECTORY));
            if (iLen > 0) {
                TCHAR *pszText1 = (TCHAR*)mir_alloc(iLen*sizeof(TCHAR) + 2);
                GetDlgItemText(hwndDlg, IDC_LOGDIRECTORY, pszText1, iLen + 1);
                db_set_ts(NULL, CHAT_MODULE, "LogDirectory", pszText1);
                mir_free(pszText1);
                g_Settings.bLoggingEnabled = IsDlgButtonChecked(hwndDlg, IDC_LOGGING) == BST_CHECKED;
                db_set_b(0, CHAT_MODULE, "LoggingEnabled", g_Settings.bLoggingEnabled);
            }
            else {
                db_unset(NULL, CHAT_MODULE, "LogDirectory");
                db_set_b(0, CHAT_MODULE, "LoggingEnabled", 0);
            }
            pci->SM_InvalidateLogDirectories();

            iLen = SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN4, UDM_GETPOS, 0, 0);
            db_set_w(NULL, CHAT_MODULE, "LoggingLimit", (WORD)iLen);

            iLen = SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN3, UDM_GETPOS, 0, 0);
            if (iLen > 0)
                db_set_b(0, CHAT_MODULE, "NicklistRowDist", (BYTE)iLen);
            else
                db_unset(NULL, CHAT_MODULE, "NicklistRowDist");

            iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_LOGTIMESTAMP));
            if (iLen > 0) {
                pszText = (char *)mir_realloc(pszText, iLen + 1);
                GetDlgItemTextA(hwndDlg, IDC_LOGTIMESTAMP, pszText, iLen + 1);
                db_set_s(NULL, CHAT_MODULE, "LogTimestamp", pszText);
            }
            else db_unset(NULL, CHAT_MODULE, "LogTimestamp");

            iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_TIMESTAMP));
            if (iLen > 0) {
                pszText = (char *)mir_realloc(pszText, iLen + 1);
                GetDlgItemTextA(hwndDlg, IDC_TIMESTAMP, pszText, iLen + 1);
                db_set_s(NULL, CHAT_MODULE, "HeaderTime", pszText);
            }
            else db_unset(NULL, CHAT_MODULE, "HeaderTime");

            iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_INSTAMP));
            if (iLen > 0) {
                pszText = (char *)mir_realloc(pszText, iLen + 1);
                GetDlgItemTextA(hwndDlg, IDC_INSTAMP, pszText, iLen + 1);
                db_set_s(NULL, CHAT_MODULE, "HeaderIncoming", pszText);
            }
            else db_unset(NULL, CHAT_MODULE, "HeaderIncoming");

            iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_OUTSTAMP));
            if (iLen > 0) {
                pszText = (char *)mir_realloc(pszText, iLen + 1);
                GetDlgItemTextA(hwndDlg, IDC_OUTSTAMP, pszText, iLen + 1);
                db_set_s(NULL, CHAT_MODULE, "HeaderOutgoing", pszText);
            }
            else db_unset(NULL, CHAT_MODULE, "HeaderOutgoing");

            iLen = SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN2, UDM_GETPOS, 0, 0);
            db_set_w(NULL, CHAT_MODULE, "LogLimit", (WORD)iLen);
            mir_free(pszText);

            if (pci->hListBkgBrush)
                DeleteObject(pci->hListBkgBrush);
            pci->hListBkgBrush = CreateSolidBrush(M.GetDword(CHAT_MODULE, "ColorNicklistBG", SRMSGDEFSET_BKGCOLOUR));

            pci->ReloadSettings();
            pci->MM_FontsChanged();
            pci->MM_FixColors();
            pci->SM_BroadcastMessage(NULL, GC_SETWNDPROPS, 0, 0, TRUE);

            PluginConfig.reloadSettings();
            CacheMsgLogIcons();
            CacheLogFonts();
            return TRUE;
        }
        break;

    case WM_TIMER:
        if (IsWindow(hPathTip))
            KillTimer(hPathTip, 4); // It will prevent tooltip autoclosing
        break;

    case WM_DESTROY:
        if (hPathTip) {
            KillTimer(hwndDlg, 0);
            DestroyWindow(hPathTip);
            hPathTip = 0;
        }
        break;
    }
    return FALSE;
}