static int CListIconsChanged(WPARAM, LPARAM) { for (int i = 0; i < _countof(statusModeList); i++) ImageList_ReplaceIcon_IconLibLoaded(hCListImages, i + 1, Skin_LoadIcon(skinIconStatusList[i])); ImageList_ReplaceIcon_IconLibLoaded(hCListImages, IMAGE_GROUPOPEN, Skin_LoadIcon(SKINICON_OTHER_GROUPOPEN)); ImageList_ReplaceIcon_IconLibLoaded(hCListImages, IMAGE_GROUPSHUT, Skin_LoadIcon(SKINICON_OTHER_GROUPSHUT)); for (int i = 0; i < protoIconIndex.getCount(); i++) for (int j = 0; j < _countof(statusModeList); j++) ImageList_ReplaceIcon_IconLibLoaded(hCListImages, protoIconIndex[i].iIconBase + j, Skin_LoadProtoIcon(protoIconIndex[i].szProto, statusModeList[j])); cli.pfnTrayIconIconsChanged(); cli.pfnInvalidateRect(cli.hwndContactList, NULL, TRUE); return 0; }
void CJabberDlgBookmarks::OnInitDialog() { CSuper::OnInitDialog(); WindowSetIcon(m_hwnd, m_proto, "bookmarks"); m_btnAdd.Disable(); m_btnEdit.Disable(); m_btnRemove.Disable(); m_lvBookmarks.SetExtendedListViewStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP | LVS_EX_DOUBLEBUFFER); HIMAGELIST hIml = m_lvBookmarks.CreateImageList(LVSIL_SMALL); ImageList_AddIcon_Icolib(hIml, m_proto->LoadIconEx("group")); ImageList_AddIcon_Icolib(hIml, Skin_LoadIcon(SKINICON_EVENT_URL)); m_lvBookmarks.AddColumn(0, TranslateT("Bookmark Name"), m_proto->getWord("bookmarksWnd_cx0", 120)); m_lvBookmarks.AddColumn(1, TranslateT("Address (JID or URL)"), m_proto->getWord("bookmarksWnd_cx1", 210)); m_lvBookmarks.AddColumn(2, TranslateT("Nickname"), m_proto->getWord("bookmarksWnd_cx2", 90)); m_lvBookmarks.EnableGroupView(TRUE); m_lvBookmarks.AddGroup(0, TranslateT("Conferences")); m_lvBookmarks.AddGroup(1, TranslateT("Links")); Utils_RestoreWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "bookmarksWnd_"); }
int CIcqProto::OnPreBuildContactMenu(WPARAM hContact, LPARAM) { if (hContact == NULL) return 0; if (icqOnline()) { BOOL bCtrlPressed = (GetKeyState(VK_CONTROL)&0x8000 ) != 0; DWORD dwUin = getContactUin(hContact); Menu_ShowItem(g_hContactMenuItems[ICMI_AUTH_REQUEST], dwUin && (bCtrlPressed || (getByte(hContact, "Auth", 0) && getWord(hContact, DBSETTING_SERVLIST_ID, 0)))); Menu_ShowItem(g_hContactMenuItems[ICMI_AUTH_GRANT], dwUin && (bCtrlPressed || getByte(hContact, "Grant", 0))); Menu_ShowItem(g_hContactMenuItems[ICMI_AUTH_REVOKE], dwUin && (bCtrlPressed || (getByte("PrivacyItems", 0) && !getByte(hContact, "Grant", 0)))); Menu_ShowItem(g_hContactMenuItems[ICMI_ADD_TO_SERVLIST], m_bSsiEnabled && !getWord(hContact, DBSETTING_SERVLIST_ID, 0) && !getWord(hContact, DBSETTING_SERVLIST_IGNORE, 0) && !db_get_b(hContact, "CList", "NotOnList", 0)); } Menu_ShowItem(g_hContactMenuItems[ICMI_OPEN_PROFILE],getContactUin(hContact) != 0); BYTE bXStatus = getContactXStatus(hContact); Menu_ShowItem(g_hContactMenuItems[ICMI_XSTATUS_DETAILS], m_bHideXStatusUI ? 0 : bXStatus != 0); if (bXStatus && !m_bHideXStatusUI) { if (bXStatus > 0 && bXStatus <= XSTATUS_COUNT) Menu_ModifyItem(g_hContactMenuItems[ICMI_XSTATUS_DETAILS], NULL, getXStatusIcon(bXStatus, LR_SHARED)); else Menu_ModifyItem(g_hContactMenuItems[ICMI_XSTATUS_DETAILS], NULL, Skin_LoadIcon(SKINICON_OTHER_SMALLDOT)); } return 0; }
int ImageList_AddIcon_IconLibLoaded(HIMAGELIST hIml, int iconId) { HICON hIcon = Skin_LoadIcon(iconId); int res = ImageList_AddIcon(hIml, hIcon); IcoLib_ReleaseIcon(hIcon); return res; }
MIR_APP_DLL(void) Button_SetIcon_IcoLib(HWND hwndDlg, int itemId, int iconId, const char *tooltip) { HWND hWnd = GetDlgItem(hwndDlg, itemId); SendMessage(hWnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)Skin_LoadIcon(iconId, false)); SendMessage(hWnd, BUTTONSETASFLATBTN, TRUE, 0); SendMessage(hWnd, BUTTONADDTOOLTIP, (WPARAM)tooltip, 0); }
int CListModernOptInit(WPARAM wParam, LPARAM) { static int iBoldControls[] = { IDC_TXT_TITLE1, IDC_TXT_TITLE2, MODERNOPT_CTRL_LAST }; MODERNOPTOBJECT obj = { 0 }; obj.cbSize = sizeof(obj); obj.dwFlags = MODEROPT_FLG_TCHAR | MODEROPT_FLG_NORESIZE; obj.hIcon = Skin_LoadIcon(SKINICON_OTHER_MIRANDA); obj.hInstance = g_hInst; obj.iSection = MODERNOPT_PAGE_CLIST; obj.iType = MODERNOPT_TYPE_SECTIONPAGE; obj.iBoldControls = iBoldControls; obj.lpzClassicGroup = LPGEN("Contact list"); obj.lpzClassicPage = "List"; obj.lpzHelpUrl = "http://wiki.miranda-ng.org/"; obj.lpzTemplate = MAKEINTRESOURCEA(IDD_MODERNOPT_CLIST); obj.pfnDlgProc = DlgProcGenOpts; CallService(MS_MODERNOPT_ADDOBJECT, wParam, (LPARAM)&obj); return 0; }
void CVkProto::InitPopups(void) { TCHAR desc[256]; char name[256]; POPUPCLASS ppc = { sizeof(ppc) }; ppc.flags = PCF_TCHAR; mir_sntprintf(desc, _T("%s %s"), m_tszUserName, TranslateT("Errors")); mir_snprintf(name, "%s_%s", m_szModuleName, "Error"); ppc.ptszDescription = desc; ppc.pszName = name; ppc.hIcon = Skin_LoadIcon(SKINICON_ERROR); ppc.colorBack = RGB(191, 0, 0); //Red ppc.colorText = RGB(255, 245, 225); //Yellow ppc.iSeconds = 60; m_hPopupClassError = Popup_RegisterClass(&ppc); mir_sntprintf(desc, _T("%s %s"), m_tszUserName, TranslateT("Notification")); mir_snprintf(name, "%s_%s", m_szModuleName, "Notification"); ppc.ptszDescription = desc; ppc.pszName = name; ppc.hIcon = IcoLib_GetIconByHandle(GetIconHandle(IDI_NOTIFICATION)); ppc.colorBack = RGB(190, 225, 255); //Blue ppc.colorText = RGB(255, 255, 255); //White ppc.iSeconds = 4; m_hPopupClassNotification = Popup_RegisterClass(&ppc); }
static void RestoreUnreadUrlAlerts(void) { CLISTEVENT cle = { sizeof(cle) }; cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_URL); cle.pszService = "SRUrl/ReadUrl"; cle.flags = CLEF_TCHAR; for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { MEVENT hDbEvent = db_event_firstUnread(hContact); while (hDbEvent) { DBEVENTINFO dbei = { sizeof(dbei) }; db_event_get(hDbEvent, &dbei); if ( !(dbei.flags&(DBEF_SENT|DBEF_READ)) && dbei.eventType == EVENTTYPE_URL) { TCHAR toolTip[256]; mir_sntprintf(toolTip, _countof(toolTip), TranslateT("URL from %s"), pcli->pfnGetContactDisplayName(hContact, 0)); cle.hContact = hContact; cle.hDbEvent = hDbEvent; cle.ptszTooltip = toolTip; CallService(MS_CLIST_ADDEVENT, 0, (LPARAM)&cle); } hDbEvent = db_event_next(hContact, hDbEvent); } } }
void LoadIcons(void) { hIconsList = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR32 | ILC_MASK, 0, 100); ImageList_AddIcon(hIconsList, Skin_LoadIcon(SKINICON_EVENT_MESSAGE)); ImageList_AddIcon(hIconsList, LoadIconEx("overlay", FALSE)); ImageList_SetOverlayImage(hIconsList, 1, 1); }
INT_PTR CSkypeProto::EventGetIcon(WPARAM wParam, LPARAM lParam) { DBEVENTINFO* dbei = (DBEVENTINFO*)lParam; HICON icon = NULL; switch (dbei->eventType) { case SKYPE_DB_EVENT_TYPE_CALL_INFO: case SKYPE_DB_EVENT_TYPE_INCOMING_CALL: { icon = IcoLib_GetIconByHandle(GetIconHandle("inc_call")); break; } case SKYPE_DB_EVENT_TYPE_ACTION: { icon = IcoLib_GetIconByHandle(GetIconHandle("me_action")); break; } default: { icon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); break; } } return (INT_PTR)((wParam & LR_SHARED) ? icon : CopyIcon(icon)); }
static int TSAPI LoadFromIconLib() { for (int n = 0; n < _countof(ICONBLOCKS); n++) for (int i = 0; i < ICONBLOCKS[n].nItems; i++) *(ICONBLOCKS[n].idesc[i].phIcon) = IcoLib_GetIcon(ICONBLOCKS[n].idesc[i].szName); PluginConfig.g_buttonBarIcons[0] = Skin_LoadIcon(SKINICON_OTHER_ADDCONTACT); PluginConfig.g_buttonBarIcons[1] = Skin_LoadIcon(SKINICON_OTHER_HISTORY); PluginConfig.g_buttonBarIconHandles[0] = Skin_GetIconHandle(SKINICON_OTHER_HISTORY); PluginConfig.g_buttonBarIconHandles[1] = Skin_GetIconHandle(SKINICON_OTHER_ADDCONTACT); PluginConfig.g_buttonBarIconHandles[20] = Skin_GetIconHandle(SKINICON_OTHER_USERDETAILS); PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING] = PluginConfig.g_buttonBarIcons[12] = Skin_LoadIcon(SKINICON_OTHER_TYPING); PluginConfig.g_IconChecked = Skin_LoadIcon(SKINICON_OTHER_TICK); PluginConfig.g_IconUnchecked = Skin_LoadIcon(SKINICON_OTHER_NOTICK); PluginConfig.g_IconGroupOpen = Skin_LoadIcon(SKINICON_OTHER_GROUPOPEN); PluginConfig.g_IconGroupClose = Skin_LoadIcon(SKINICON_OTHER_GROUPSHUT); PluginConfig.g_iconOverlayEnabled = IcoLib_GetIcon("tabSRMM_overlay_enabled"); PluginConfig.g_iconOverlayDisabled = IcoLib_GetIcon("tabSRMM_overlay_disabled"); PluginConfig.g_iconClock = IcoLib_GetIcon("tabSRMM_clock_symbol"); CacheMsgLogIcons(); M.BroadcastMessage(DM_LOADBUTTONBARICONS, 0, 0); return 0; }
int PreBuildContactMenu(WPARAM hContact, LPARAM) { char *szProto = GetContactProto(hContact); int iMode = szProto ? CallProtoService(szProto, PS_GETSTATUS, 0, 0) : 0; int Flag1 = szProto ? CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_1, 0) : 0; int iContactMode = db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE); TCHAR szSetStr[256], szReadStr[256]; szSetStr[0] = szReadStr[0] = 0; HICON hReadMsgIcon = NULL; if (szProto) { int i; for (i = _countof(StatusModeList) - 1; i >= 0; i--) if (iMode == StatusModeList[i].Status) break; // the protocol supports status message sending for current status, or autoreplying if ((Flag1 & PF1_MODEMSGSEND && CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_3, 0) & Proto_Status2Flag(iMode)) || ((Flag1 & PF1_IM) == PF1_IM && (i < 0 || !g_AutoreplyOptPage.GetDBValueCopy(StatusModeList[i].DisableReplyCtlID)))) mir_sntprintf(szSetStr, TranslateT("Set %s message for the contact"), pcli->pfnGetStatusModeDescription(iMode, 0), pcli->pfnGetContactDisplayName(hContact, 0)); // the protocol supports status message reading for contact's status if (Flag1 & PF1_MODEMSGRECV && CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_3, 0) & Proto_Status2Flag(iContactMode)) { mir_sntprintf(szReadStr, TranslateT("Re&ad %s message"), pcli->pfnGetStatusModeDescription(iContactMode, 0)); hReadMsgIcon = Skin_LoadProtoIcon(szProto, iContactMode); } } if (g_hContactMenuItem) { if (szSetStr[0] == 0) Menu_ShowItem(g_hContactMenuItem, false); else Menu_ModifyItem(g_hContactMenuItem, szSetStr, iconList[8].hIcolib, 0); // if this contact supports sending/receiving messages if ((Flag1 & PF1_IM) == PF1_IM) { int iAutoreply = CContactSettings(g_ProtoStates[szProto].m_status, hContact).Autoreply; HANDLE hIcon; switch (iAutoreply) { case VAL_USEDEFAULT: hIcon = Skin_LoadIcon(IDI_DOT); break; case 0: hIcon = iconList[0].hIcolib; break; default: iAutoreply = 1; hIcon = iconList[1].hIcolib; break; } Menu_ModifyItem(g_hToggleSOEContactMenuItem, NULL, hIcon, 0); Menu_ModifyItem(g_hAutoreplyOnContactMenuItem, NULL, iconList[1].hIcolib, (iAutoreply == 1) ? CMIF_CHECKED : 0); Menu_ModifyItem(g_hAutoreplyOffContactMenuItem, NULL, iconList[0].hIcolib, (iAutoreply == 0) ? CMIF_CHECKED : 0); Menu_ModifyItem(g_hAutoreplyUseDefaultContactMenuItem, NULL, iconList[5].hIcolib, (iAutoreply == VAL_USEDEFAULT) ? CMIF_CHECKED : 0); } else // hide the Autoreply menu item Menu_ShowItem(g_hToggleSOEContactMenuItem, false); } if (szReadStr[0] == 0) Menu_ShowItem(g_hReadStatMenuItem, false); else Menu_ModifyItem(g_hReadStatMenuItem, szReadStr, hReadMsgIcon, 0); return 0; }
void Manager::initImageList() { char buff[256]; m_himlStates = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, ServerList::FTP_COUNT + 4, 0); ImageList_AddIcon(m_himlStates, Skin_LoadIcon(SKINICON_OTHER_DELETE)); // image index 0 is useless for INDEXTOSTATEIMAGEMASK ImageList_AddIcon(m_himlStates, Skin_LoadIcon(SKINICON_OTHER_DELETE)); ImageList_AddIcon(m_himlStates, Skin_LoadIcon(SKINICON_OTHER_NOTICK)); ImageList_AddIcon(m_himlStates, Skin_LoadIcon(SKINICON_OTHER_TICK)); for (int i = 0; i < ServerList::FTP_COUNT; i++) { mir_snprintf(buff, "ftp%d", i); ImageList_AddIcon(m_himlStates, Utils::loadIconEx(buff)); } TreeView_SetImageList(m_hwndFileTree, m_himlStates, TVSIL_STATE); TreeView_SetItemHeight(m_hwndFileTree, 18); }
static int MessagePrebuild(WPARAM hContact, LPARAM) { if (!blInit || (db_get_b(hContact, "CList", "NotOnList", 0) == 1)) { Menu_EnableItem(hMenuItemAutoChat, false); Menu_EnableItem(hMenuItemNotToChat, false); } else { if (db_get_b(hContact, BOLTUN_KEY, DB_CONTACT_BOLTUN_AUTO_CHAT, FALSE)) Menu_ModifyItem(hMenuItemAutoChat, NULL, Skin_LoadIcon(SKINICON_OTHER_TICK), CMIF_CHECKED); else Menu_ModifyItem(hMenuItemAutoChat, NULL, Skin_LoadIcon(SKINICON_OTHER_NOTICK), 0); if (db_get_b(hContact, BOLTUN_KEY, DB_CONTACT_BOLTUN_NOT_TO_CHAT, FALSE)) Menu_ModifyItem(hMenuItemNotToChat, NULL, Skin_LoadIcon(SKINICON_OTHER_TICK), CMIF_CHECKED); else Menu_ModifyItem(hMenuItemNotToChat, NULL, Skin_LoadIcon(SKINICON_OTHER_NOTICK), 0); } return 0; }
HICON InitMButton(HWND hDlg, int idButton, int idIcon, TCHAR *szTip) { HWND hButton = GetDlgItem(hDlg, idButton); HICON hIcon = Skin_LoadIcon(idIcon); SendMessage(hButton, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon); SendMessage(hButton, BUTTONSETASFLATBTN, TRUE, 0); SendMessage(hButton, BUTTONADDTOOLTIP, (WPARAM)szTip, BATF_TCHAR); return hIcon; }
INT_PTR CSkypeProto::EventGetIcon(WPARAM wParam, LPARAM lParam) { DBEVENTINFO* dbei = (DBEVENTINFO*)lParam; HICON icon = NULL; switch (dbei->eventType) { case SKYPE_DB_EVENT_TYPE_CALL_INFO: case SKYPE_DB_EVENT_TYPE_INCOMING_CALL: { icon = GetIcon(IDI_CALL); break; } case SKYPE_DB_EVENT_TYPE_ACTION: { icon = GetIcon(IDI_ACTION_ME); break; } case SKYPE_DB_EVENT_TYPE_FILETRANSFER_INFO: { icon = Skin_LoadIcon(SKINICON_EVENT_FILE); break; } case SKYPE_DB_EVENT_TYPE_URIOBJ: { icon = Skin_LoadIcon(SKINICON_EVENT_URL); break; } case SKYPE_DB_EVENT_TYPE_UNKNOWN: { icon = Skin_LoadIcon(SKINICON_WARNING); break; } default: { icon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); break; } } return (INT_PTR)((wParam & LR_SHARED) ? icon : CopyIcon(icon)); }
void utils::setStatusMessage(MCONTACT hContact, const TCHAR *ptszMessage) { if (ptszMessage != NULL) { StatusTextData st = { 0 }; st.cbSize = sizeof(st); st.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); _tcsncpy_s(st.tszText, ptszMessage, _TRUNCATE); CallService(MS_MSG_SETSTATUSTEXT, hContact, (LPARAM)&st); } else CallService(MS_MSG_SETSTATUSTEXT, hContact, NULL); }
void CreateHelperWnd() { WNDCLASSEX wcex; // First we must check if Miranda's main window has the "Title bar" border style... if ((GetWindowLongPtr(hMirandaWnd, GWL_STYLE) & WS_CAPTION) && !(GetWindowLongPtr(hMirandaWnd, GWL_EXSTYLE) & WS_EX_TOOLWINDOW)) return; if (hHelperWnd) return; // We need only one helper window // Widows taskbar workaround // We don't want our helper window to be displayed on Windows taskbar. // So first of all we have to create an invisible window and then set it as // parent to our window. // Register windows class wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = HelperProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInst; wcex.hIcon = Skin_LoadIcon(SKINICON_OTHER_MIRANDA, true); wcex.hCursor = NULL; wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wcex.lpszMenuName = NULL; wcex.lpszClassName = _T("ZeroSwitchHlp"); wcex.hIconSm = Skin_LoadIcon(SKINICON_OTHER_MIRANDA); if (NULL == RegisterClassEx(&wcex)) return; // wtf hDummyWnd = CreateWindow(_T("ZeroSwitchHlp"), _T(""), WS_POPUP, 0, 0, 0, 0, NULL, NULL, hInst, NULL); if (!hDummyWnd) UnregisterClass(_T("ZeroSwitchHlp"), hInst); hHelperWnd = CreateWindow(_T("ZeroSwitchHlp"), _T("Miranda NG"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, -100, -100, 90, 90, hDummyWnd, NULL, hInst, NULL); if (!hHelperWnd) { DestroyWindow(hDummyWnd); UnregisterClass(_T("ZeroSwitchHlp"), hInst); } }
static int MessageEventAdded(WPARAM hContact, LPARAM lParam) { DBEVENTINFO dbei = { sizeof(dbei) }; db_event_get(lParam, &dbei); if (dbei.flags & (DBEF_SENT | DBEF_READ) || !(dbei.eventType == EVENTTYPE_MESSAGE || DbEventIsForMsgWindow(&dbei))) return 0; CallServiceSync(MS_CLIST_REMOVEEVENT, hContact, 1); /* does a window for the contact exist? */ HWND hwnd = WindowList_Find(g_dat.hMessageWindowList, hContact); if (hwnd) { if (!db_get_b(NULL, SRMMMOD, SRMSGSET_DONOTSTEALFOCUS, SRMSGDEFSET_DONOTSTEALFOCUS)) { ShowWindow(hwnd, SW_RESTORE); SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); SetForegroundWindow(hwnd); SkinPlaySound("RecvMsgActive"); } else { if (GetForegroundWindow() == hwnd) SkinPlaySound("RecvMsgActive"); else SkinPlaySound("RecvMsgInactive"); } return 0; } /* new message */ SkinPlaySound("AlertMsg"); char *szProto = GetContactProto(hContact); if (szProto && (g_dat.openFlags & SRMMStatusToPf2(CallProtoService(szProto, PS_GETSTATUS, 0, 0)))) { NewMessageWindowLParam newData = { 0 }; newData.hContact = hContact; newData.noActivate = db_get_b(NULL, SRMMMOD, SRMSGSET_DONOTSTEALFOCUS, SRMSGDEFSET_DONOTSTEALFOCUS); CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_MSG), NULL, DlgProcMessage, (LPARAM)&newData); return 0; } CLISTEVENT cle = { sizeof(cle) }; cle.hContact = hContact; cle.hDbEvent = lParam; cle.flags = CLEF_TCHAR; cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); cle.pszService = "SRMsg/ReadMessage"; TCHAR toolTip[256]; mir_sntprintf(toolTip, TranslateT("Message from %s"), pcli->pfnGetContactDisplayName(hContact, 0)); cle.ptszTooltip = toolTip; CallService(MS_CLIST_ADDEVENT, 0, (LPARAM)&cle); return 0; }
void TSAPI CreateImageList(BOOL bInitial) { // the imagelist is now a fake. It is still needed to provide the tab control with a // image list handle. This will make sure that the tab control will reserve space for // an icon on each tab. This is a blank and empty icon if (bInitial) { PluginConfig.g_hImageList = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 2, 0); HICON hIcon = CreateIcon(g_hInst, 16, 16, 1, 4, NULL, NULL); ImageList_AddIcon(PluginConfig.g_hImageList, hIcon); DestroyIcon(hIcon); } PluginConfig.g_IconFileEvent = Skin_LoadIcon(SKINICON_EVENT_FILE); PluginConfig.g_IconMsgEvent = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); PluginConfig.g_IconMsgEventBig = Skin_LoadIcon(SKINICON_EVENT_MESSAGE, true); if ((HICON)CALLSERVICE_NOTFOUND == PluginConfig.g_IconMsgEventBig) PluginConfig.g_IconMsgEventBig = 0; PluginConfig.g_IconTypingEventBig = Skin_LoadIcon(SKINICON_OTHER_TYPING, true); if ((HICON)CALLSERVICE_NOTFOUND == PluginConfig.g_IconTypingEventBig) PluginConfig.g_IconTypingEventBig = 0; PluginConfig.g_IconSend = PluginConfig.g_buttonBarIcons[9]; PluginConfig.g_IconTypingEvent = PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING]; }
static INT_PTR DbEventGetIcon(WPARAM wParam, LPARAM lParam) { DBEVENTINFO* dbei = (DBEVENTINFO*)lParam; HICON icon = NULL; DBEVENTTYPEDESCR* et = (DBEVENTTYPEDESCR*)DbEventTypeGet((WPARAM)dbei->szModule, (LPARAM)dbei->eventType); if (et && ServiceExists(et->iconService)) { icon = (HICON)CallService(et->iconService, wParam, lParam); if (icon) return (INT_PTR)icon; } if (et && et->eventIcon) icon = IcoLib_GetIconByHandle(et->eventIcon); if (!icon) { char szName[100]; mir_snprintf(szName, "eventicon_%s%d", dbei->szModule, dbei->eventType); icon = IcoLib_GetIcon(szName); } if (!icon) { switch(dbei->eventType) { case EVENTTYPE_URL: icon = Skin_LoadIcon(SKINICON_EVENT_URL); break; case EVENTTYPE_FILE: icon = Skin_LoadIcon(SKINICON_EVENT_FILE); break; default: // EVENTTYPE_MESSAGE and unknown types icon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); break; } } return (INT_PTR)((wParam & LR_SHARED) ? icon : CopyIcon(icon)); }
INT_PTR OnEventFire(WPARAM wParam, LPARAM) { CallService(MS_SYSTEM_REMOVEWAIT, wParam, 0); CloseHandle((HANDLE)wParam); HWND parent = pcli->hwndContactList; if (parent == NULL) // no clist, no buttons return -1; WNDCLASS wndclass = {0}; wndclass.lpfnWndProc = TopToolBarProc; wndclass.cbWndExtra = sizeof(void *); wndclass.hInstance = hInst; wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); wndclass.lpszClassName = pluginname; RegisterClass(&wndclass); g_ctrl->pButtonList = (SortedList *)&Buttons; g_ctrl->hWnd = CreateWindow(pluginname, _T("Toolbar"), WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0, 0, 0, g_ctrl->nLastHeight, parent, NULL, hInst, NULL); SetWindowLongPtr(g_ctrl->hWnd, 0, (LONG_PTR)g_ctrl); LoadBackgroundOptions(); // if we're working in skinned clist, receive the standard buttons & customizations if (g_CustomProc && g_ctrl->hWnd) g_CustomProc(TTB_WINDOW_HANDLE, g_ctrl->hWnd, g_CustomProcParam); else InitInternalButtons(); // if there's no customized frames, create our own if (g_ctrl->hFrame == NULL) { CLISTFrame Frame = { sizeof(Frame) }; Frame.tname = _T("Toolbar"); Frame.hWnd = g_ctrl->hWnd; Frame.align = alTop; Frame.Flags = F_VISIBLE | F_NOBORDER | F_LOCKED | F_TCHAR; Frame.height = g_ctrl->nLastHeight; Frame.hIcon = Skin_LoadIcon(SKINICON_OTHER_FRAME); g_ctrl->hFrame = (HANDLE)CallService(MS_CLIST_FRAMES_ADDFRAME, (WPARAM)&Frame, 0); } // receive buttons NotifyEventHooks(hTTBModuleLoaded, 0, 0); return 0; }
static int OnLoadInit(WPARAM, LPARAM) { mir_getCI(NULL); CMenuItem mi; mi.position = -0x7FFFFFFF; mi.flags = CMIF_TCHAR; mi.hIcolibItem = Skin_LoadIcon(SKINICON_OTHER_MIRANDA); mi.name.t = LPGENT("Custom contact sound"); mi.pszService = "XSoundNotify/ContactMenuCommand"; hChangeSound = Menu_AddContactMenuItem(&mi); InitSelfSounds(); return 0; }
int ModernSkinOptInit(WPARAM wParam, LPARAM) { MODERNOPTOBJECT obj = { 0 }; obj.cbSize = sizeof(obj); obj.dwFlags = MODEROPT_FLG_TCHAR; obj.hIcon = Skin_LoadIcon(SKINICON_OTHER_MIRANDA); obj.hInstance = g_hInst; obj.iSection = MODERNOPT_PAGE_SKINS; obj.iType = MODERNOPT_TYPE_SELECTORPAGE; obj.lptzSubsection = _T("Contact list"); obj.lpzThemeExtension = ".msf"; obj.lpzThemeModuleName = "ModernSkinSel"; CallService(MS_MODERNOPT_ADDOBJECT, wParam, (LPARAM)&obj); return 0; }
extern "C" __declspec(dllexport) int Load(void) { mir_getLP(&pluginInfo); hShowGuide = CreateServiceFunction("UserGuide/ShowGuide", ShowGuideFile); CMenuItem mi; mi.position = 500000; mi.flags = CMIF_TCHAR; mi.hIcolibItem = Skin_LoadIcon(SKINICON_OTHER_HELP); mi.name.t = LPGENT("User Guide"); mi.pszService = "UserGuide/ShowGuide"; Menu_AddMainMenuItem(&mi); return 0; }
static int MessageEventAdded(WPARAM hContact, LPARAM lParam) { MEVENT hDbEvent = (MEVENT)lParam; DBEVENTINFO dbei = { sizeof(dbei) }; db_event_get(hDbEvent, &dbei); if (dbei.eventType == EVENTTYPE_MESSAGE && (dbei.flags & DBEF_READ)) return 0; HWND hwnd = WindowList_Find(g_dat.hMessageWindowList, hContact); if (hwnd == NULL) hwnd = WindowList_Find(g_dat.hMessageWindowList, hContact = db_event_getContact(hDbEvent)); if (hwnd) SendMessage(hwnd, HM_DBEVENTADDED, hContact, lParam); if (dbei.flags & DBEF_SENT || !DbEventIsMessageOrCustom(&dbei)) return 0; pcli->pfnRemoveEvent(hContact, 1); /* does a window for the contact exist? */ if (hwnd == NULL) { /* new message */ SkinPlaySound("AlertMsg"); if (IsAutoPopup(hContact)) { NewMessageWindowLParam newData = { 0 }; newData.hContact = hContact; HWND hParent = GetParentWindow(newData.hContact, FALSE); newData.flags = NMWLP_INCOMING; CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_MSG), hParent, DlgProcMessage, (LPARAM)&newData); return 0; } } if (hwnd == NULL || !IsWindowVisible(GetParent(hwnd))) { TCHAR *contactName = (TCHAR*)pcli->pfnGetContactDisplayName(hContact, 0); TCHAR toolTip[256]; CLISTEVENT cle = {}; cle.flags = CLEF_TCHAR; cle.hContact = hContact; cle.hDbEvent = hDbEvent; cle.hIcon = Skin_LoadIcon(SKINICON_EVENT_MESSAGE); cle.pszService = "SRMsg/ReadMessage"; mir_sntprintf(toolTip, TranslateT("Message from %s"), contactName); cle.ptszTooltip = toolTip; pcli->pfnAddEvent(&cle); } return 0; }
BOOL DoTrayIcon(SESSION_INFO *si, GCEVENT *gce) { switch (gce->pDest->iType) { case GC_EVENT_MESSAGE | GC_EVENT_HIGHLIGHT: case GC_EVENT_ACTION | GC_EVENT_HIGHLIGHT: chatApi.AddEvent(si->hContact, Skin_LoadIcon(SKINICON_EVENT_MESSAGE), GC_FAKE_EVENT, 0, TranslateT("%s wants your attention in %s"), gce->ptszNick, si->ptszName); break; case GC_EVENT_MESSAGE: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_MESSAGE], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("%s speaks in %s"), gce->ptszNick, si->ptszName); break; case GC_EVENT_ACTION: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_ACTION], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("%s speaks in %s"), gce->ptszNick, si->ptszName); break; case GC_EVENT_JOIN: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_JOIN], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("%s has joined %s"), gce->ptszNick, si->ptszName); break; case GC_EVENT_PART: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_PART], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("%s has left %s"), gce->ptszNick, si->ptszName); break; case GC_EVENT_QUIT: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_QUIT], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("%s has disconnected"), gce->ptszNick); break; case GC_EVENT_NICK: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_NICK], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("%s is now known as %s"), gce->ptszNick, gce->ptszText); break; case GC_EVENT_KICK: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_KICK], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("%s kicked %s from %s"), gce->ptszStatus, gce->ptszNick, si->ptszName); break; case GC_EVENT_NOTICE: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_NOTICE], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("Notice from %s"), gce->ptszNick); break; case GC_EVENT_TOPIC: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_TOPIC], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("Topic change in %s"), si->ptszName); break; case GC_EVENT_INFORMATION: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_INFO], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("Information in %s"), si->ptszName); break; case GC_EVENT_ADDSTATUS: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_ADDSTATUS], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("%s enables '%s' status for %s in %s"), gce->ptszText, gce->ptszStatus, gce->ptszNick, si->ptszName); break; case GC_EVENT_REMOVESTATUS: chatApi.AddEvent(si->hContact, chatApi.hIcons[ICON_REMSTATUS], GC_FAKE_EVENT, CLEF_ONLYAFEW, TranslateT("%s disables '%s' status for %s in %s"), gce->ptszText, gce->ptszStatus, gce->ptszNick, si->ptszName); break; } return TRUE; }
extern "C" int __declspec(dllexport) Load() { mir_getLP(&pluginInfo); char *strTmp; CMenuItem mi; SET_UID(mi, 0x2f9f21df, 0xf33c, 0x4640, 0xb9, 0x63, 0xd3, 0x26, 0x8a, 0xb8, 0xb1, 0xf0); mi.position = -0x7FFFFFFF; mi.hIcolibItem = Skin_LoadIcon(SKINICON_OTHER_MIRANDA); mi.name.a = LPGEN("Remove Personal Settings..."); mi.pszService="RemovePersonalSettings/RemoveAll"; Menu_AddMainMenuItem(&mi); CreateServiceFunction(mi.pszService, RemoveAllService); // Get ini file name gMirandaDir[0] = '\0'; GetModuleFileNameA(GetModuleHandle(NULL),gMirandaDir,sizeof(gMirandaDir)); // Remove last name strTmp = strrchr(gMirandaDir,'\\'); if(strTmp != NULL) *strTmp = '\0'; // Set vars mir_strcat(gMirandaDir, "\\"); mir_strcpy(gIniFile, gMirandaDir); // Store last pos strTmp = &gIniFile[mir_strlen(gIniFile)]; // Lets try fist name mir_strcpy(strTmp, INI_FILE_NAME); if (_access(gIniFile, 4) != 0) { // Not found, lets try the other aproach mir_strcpy(strTmp, "plugins\\" INI_FILE_NAME); if (_access(gIniFile, 4) != 0) { // Not found :( gIniFile[0] = '\0'; } } return 0; }
void show_popup(HWND hDlg, LPCTSTR pszTitle, LPCTSTR pszText, int iNumber, int ActType) { LPMSGPOPUPDATA pmpd = (LPMSGPOPUPDATA)mir_alloc(sizeof(MSGPOPUPDATA)); if (!pmpd) return; POPUPDATAT_V2 pd = { 0 }; pd.cbSize = sizeof(pd); pd.lchContact = NULL; //(HANDLE)wParam; pd.lchIcon = Skin_LoadIcon(PopupsList[iNumber].Icon); mir_tstrncpy(pd.lptzText, pszText, _countof(pd.lptzText)); mir_tstrncpy(pd.lptzContactName, pszTitle, _countof(pd.lptzContactName)); switch (MyOptions.DefColors) { case byCOLOR_WINDOWS: pd.colorBack = GetSysColor(COLOR_BTNFACE); pd.colorText = GetSysColor(COLOR_WINDOWTEXT); break; case byCOLOR_OWN: pd.colorBack = PopupsList[iNumber].colorBack; pd.colorText = PopupsList[iNumber].colorText; break; case byCOLOR_POPUP: pd.colorBack = pd.colorText = 0; break; } if (iNumber == 0 && ActType != 0) pd.PluginWindowProc = (WNDPROC)PopupDlgProc; else pd.PluginWindowProc = (WNDPROC)PopupDlgProc2; pd.PluginData = pmpd; if (iNumber == 0) pd.iSeconds = -1; else pd.iSeconds = MyOptions.Timeout; pd.hNotification = NULL; pd.lpActions = pmpd->pa; pmpd->hDialog = hDlg; if (ActType == 1) { MakePopupAction(pmpd->pa[pd.actionCount++], IDYES); MakePopupAction(pmpd->pa[pd.actionCount++], IDNO); } CallService(MS_POPUP_ADDPOPUPT, (WPARAM)&pd, APF_NEWDATA); }
int EventArea_Create(HWND hCluiWnd) { CallService(MS_BACKGROUNDCONFIG_REGISTER, (WPARAM)(LPGEN("Event area background")"/EventArea"), 0); HookEvent(ME_BACKGROUNDCONFIG_CHANGED, ehhEventAreaBackgroundSettingsChanged); ehhEventAreaBackgroundSettingsChanged(0, 0); WNDCLASS wndclass = { 0 }; wchar_t pluginname[] = L"EventArea"; int h = GetSystemMetrics(SM_CYSMICON) + 2; if (GetClassInfo(g_plugin.getInst(), pluginname, &wndclass) == 0) { wndclass.style = 0; wndclass.lpfnWndProc = EventArea_WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = g_plugin.getInst(); wndclass.hIcon = nullptr; wndclass.hCursor = LoadCursor(nullptr, IDC_ARROW); wndclass.hbrBackground = GetSysColorBrush(COLOR_3DFACE); wndclass.lpszMenuName = nullptr; wndclass.lpszClassName = pluginname; RegisterClass(&wndclass); } g_CluiData.hwndEventFrame = CreateWindow(pluginname, pluginname, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, 0, 0, 0, h, hCluiWnd, nullptr, g_plugin.getInst(), nullptr); // register frame CLISTFrame Frame = { sizeof(Frame) }; Frame.hWnd = g_CluiData.hwndEventFrame; Frame.align = alBottom; Frame.hIcon = Skin_LoadIcon(SKINICON_OTHER_FRAME); Frame.Flags = (db_get_b(0, "CLUI", "ShowEventArea", SETTING_SHOWEVENTAREAFRAME_DEFAULT) ? F_VISIBLE : 0) | F_LOCKED | F_NOBORDER | F_NO_SUBCONTAINER | F_UNICODE; Frame.height = h; Frame.tname = L"EventArea"; //do not translate Frame.TBtname = TranslateT("Event area"); hNotifyFrame = (HANDLE)CallService(MS_CLIST_FRAMES_ADDFRAME, (WPARAM)&Frame, 0); CallService(MS_SKINENG_REGISTERPAINTSUB, (WPARAM)Frame.hWnd, (LPARAM)EventArea_PaintCallbackProc); //$$$$$ register sub for frame CallService(MS_CLIST_FRAMES_UPDATEFRAME, -1, 0); EventArea_HideShowNotifyFrame(); g_CluiData.hMenuNotify = CreatePopupMenu(); g_CluiData.wNextMenuID = 1; EventArea_ConfigureEventArea(); return 0; }