static void DBExtraIconsInit() { hExtraChat = ExtraIcon_Register("chat_activity", "Chat activity", "ChatActivity"); hExtraVisibility = ExtraIcon_Register("visibility", "Visibility", "AlwaysVis"); hExtraGender = ExtraIcon_Register("gender", "Gender", "gender_male"); for (unsigned int i = 0; i < MAX_REGS(infos); ++i) { Info &info = infos[i]; if (info.OnClick) info.hExtraIcon = ExtraIcon_Register(info.name, info.desc, info.icon, DefaultOnClick, (LPARAM) &info); else info.hExtraIcon = ExtraIcon_Register(info.name, info.desc, info.icon); } HANDLE hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); while (hContact != NULL) { SetExtraIcons(hContact); SetVisibility(hContact, -1, FALSE); SetGender(hContact, -1, FALSE); hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); } hHooks.push_back(HookEvent(ME_DB_CONTACT_SETTINGCHANGED, SettingChanged)); }
void DefaultExtraIcons_Load() { hExtraChat = ExtraIcon_Register("chat_activity", LPGEN("Chat activity"), "ChatActivity"); hExtraVisibility = ExtraIcon_Register("visibility", "Visibility", LoadSkinnedIconName(SKINICON_OTHER_VISIBLE_ALL)); hExtraGender = ExtraIcon_Register("gender", "Gender", "gender_male"); hExtraProto = ExtraIcon_Register("protocol", "Account", LoadSkinnedIconName(SKINICON_OTHER_ACCMGR), &ProtocolRebuildIcons, &ProtocolApplyIcon, &ProtocolOnClick); for (int i = 0; i < SIZEOF(infos); i++) { Info &p = infos[i]; p.hIcolib = LoadSkinnedIconHandle(p.iSkinIcon); if (p.OnClick) p.hExtraIcon = ExtraIcon_Register(p.name, p.desc, LoadSkinnedIconName(p.iSkinIcon), DefaultOnClick, (LPARAM)&p); else p.hExtraIcon = ExtraIcon_Register(p.name, p.desc, LoadSkinnedIconName(p.iSkinIcon)); } for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { SetExtraIcons(hContact); SetVisibility(hContact, -1, false); SetGender(hContact, -1, false); } HookEvent(ME_DB_CONTACT_SETTINGCHANGED, SettingChanged); }
static int InitExtraFolders(void) { struct stat stat_buffer; struct _finddata_t files; int i, count = 0; long hLong; char* ext; char buf[256]; char curdir[MAX_PATH]; const char* dir = GetFolderDir(); memset(ExtraFolderData, 0, MAX_EXTRA_FOLDERS * sizeof(LPEXFOLDERDATA)); /* NPW 9-Feb-2003 - MSVC stat() doesn't like stat() called with an empty * string */ if (dir[0] == '\0') dir = "."; if (stat(dir, &stat_buffer) != 0) { _mkdir(dir); } _getcwd(curdir, MAX_PATH); _chdir(dir); hLong = _findfirst("*", &files); for (i = 0; i < MAX_EXTRA_FOLDERS; i++) { ExtraFolderIcons[i] = NULL; } numExtraIcons = 0; while (!_findnext(hLong, &files)) { if ((files.attrib & _A_SUBDIR) == 0) { FILE *fp; fp = fopen(files.name, "r"); if (fp != NULL) { int icon[2] = { 0, 0 }; char *p, *name; while (fgets(buf, 256, fp)) { if (buf[0] == '[') { p = strchr(buf, ']'); if (p == NULL) continue; *p = '\0'; name = &buf[1]; if (!strcmp(name, "FOLDER_SETTINGS")) { while (fgets(buf, 256, fp)) { name = strtok(buf, " =\r\n"); if (name == NULL) break; if (!strcmp(name, "RootFolderIcon")) { name = strtok(NULL, " =\r\n"); if (name != NULL) SetExtraIcons(name, &icon[0]); } if (!strcmp(name, "SubFolderIcon")) { name = strtok(NULL, " =\r\n"); if (name != NULL) SetExtraIcons(name, &icon[1]); } } break; } } } fclose(fp); strcpy(buf, files.name); ext = strrchr(buf, '.'); if (ext && *(ext + 1) && !_stricmp(ext + 1, "ini")) { ExtraFolderData[count] = malloc(sizeof(EXFOLDERDATA)); if (ExtraFolderData[count]) { *ext = '\0'; memset(ExtraFolderData[count], 0, sizeof(EXFOLDERDATA)); strncpy(ExtraFolderData[count]->m_szTitle, buf, 63); ExtraFolderData[count]->m_nFolderId = next_folder_id++; ExtraFolderData[count]->m_nParent = -1; ExtraFolderData[count]->m_dwFlags = F_CUSTOM; ExtraFolderData[count]->m_nIconId = icon[0] ? -icon[0] : IDI_FOLDER; ExtraFolderData[count]->m_nSubIconId = icon[1] ? -icon[1] : IDI_FOLDER; //dprintf("extra folder with icon %i, subicon %i", //ExtraFolderData[count]->m_nIconId, //ExtraFolderData[count]->m_nSubIconId); count++; } } } } } _chdir(curdir); return count; }
int CMraProto::MraExtraIconsApply(WPARAM wParam, LPARAM) { SetExtraIcons(wParam); return 0; }