X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Ficontheme.c;fp=webcit%2Ficontheme.c;h=0000000000000000000000000000000000000000;hb=76a0f8571de023fe6bd20390174a2302e0a0b982;hp=28643aedb1dca8ac50d1cb00c4ea526ba808cfa2;hpb=50511759c152f4ca2e22fb39a9bf31fc9f9d916d;p=citadel.git diff --git a/webcit/icontheme.c b/webcit/icontheme.c deleted file mode 100644 index 28643aedb..000000000 --- a/webcit/icontheme.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Displays and customizes the iconbar. - * - * Copyright (c) 1996-2012 by the citadel.org team - * - * This program is open source software. You can redistribute it and/or - * modify it under the terms of the GNU General Public License, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "webcit.h" -#include "webserver.h" - -HashList *AvailableThemes = NULL; - -const StrBuf *DefaultTheme = NULL; -void LoadIconthemeSettings(StrBuf *icontheme, long lvalue) -{ - wcsession *WCC = WC; - void *vTheme; - const StrBuf *theme; - - if (GetHash(AvailableThemes, SKEY(icontheme), &vTheme)) - theme = (StrBuf*)vTheme; - else - theme = DefaultTheme; - - if (WCC->IconTheme != NULL) - StrBufPlain(WCC->IconTheme, SKEY(theme)); - else - WCC->IconTheme = NewStrBufDup(theme); -} - - -void tmplput_icontheme(StrBuf *Target, WCTemplputParams *TP) -{ - wcsession *WCC = WC; - if ( (WCC != NULL) && - (WCC->IconTheme != NULL)) - { - StrBufAppendTemplate(Target, TP, WCC->IconTheme, 0); - } - else - { - StrBufAppendTemplate(Target, TP, DefaultTheme, 0); - } -} - - -int LoadThemeDir(const char *DirName) -{ - StrBuf *Dir = NULL; - DIR *filedir = NULL; - struct dirent *d; - struct dirent *filedir_entry; - int d_type = 0; - int d_namelen; - - filedir = opendir (DirName); - if (filedir == NULL) { - return 0; - } - - d = (struct dirent *)malloc(offsetof(struct dirent, d_name) + PATH_MAX + 1); - if (d == NULL) { - return 0; - } - - while ((readdir_r(filedir, d, &filedir_entry) == 0) && - (filedir_entry != NULL)) - { -#ifdef _DIRENT_HAVE_D_NAMELEN - d_namelen = filedir_entry->d_namlen; - d_type = filedir_entry->d_type; -#else - -#ifndef DT_UNKNOWN -#define DT_UNKNOWN 0 -#define DT_DIR 4 -#define DT_REG 8 -#define DT_LNK 10 - -#define IFTODT(mode) (((mode) & 0170000) >> 12) -#define DTTOIF(dirtype) ((dirtype) << 12) -#endif - d_namelen = strlen(filedir_entry->d_name); - d_type = DT_UNKNOWN; -#endif - if ((d_namelen > 1) && filedir_entry->d_name[d_namelen - 1] == '~') - continue; /* Ignore backup files... */ - - if ((d_namelen == 1) && - (filedir_entry->d_name[0] == '.')) - continue; - - if ((d_namelen == 2) && - (filedir_entry->d_name[0] == '.') && - (filedir_entry->d_name[1] == '.')) - continue; - - if (d_type == DT_UNKNOWN) { - struct stat s; - char path[PATH_MAX]; - snprintf(path, PATH_MAX, "%s/%s", - DirName, filedir_entry->d_name); - if (stat(path, &s) == 0) { - d_type = IFTODT(s.st_mode); - } - } - - switch (d_type) - { - case DT_LNK: /* TODO: check whether its a file or a directory */ - case DT_DIR: - /* Skip directories we are not interested in... */ - if ((strcmp(filedir_entry->d_name, ".svn") == 0) || - (strcmp(filedir_entry->d_name, "t") == 0)) - break; - - Dir = NewStrBufPlain (filedir_entry->d_name, d_namelen); - if (DefaultTheme == NULL) - DefaultTheme = Dir; - Put(AvailableThemes, SKEY(Dir), Dir, HFreeStrBuf); - break; - case DT_REG: - default: - break; - } - - - } - free(d); - closedir(filedir); - - return 1; -} - -HashList *GetValidThemeHash(StrBuf *Target, WCTemplputParams *TP) -{ - return AvailableThemes; -} -void -ServerStartModule_ICONTHEME -(void) -{ - AvailableThemes = NewHash(1, NULL); -} -void -InitModule_ICONTHEME -(void) -{ - StrBuf *Themes = NewStrBufPlain(static_dirs[0], -1); - - StrBufAppendBufPlain(Themes, HKEY("/"), 0); - StrBufAppendBufPlain(Themes, HKEY("webcit_icons"), 0); - LoadThemeDir(ChrPtr(Themes)); - FreeStrBuf(&Themes); - - RegisterPreference("icontheme", _("Icon Theme"), PRF_STRING, LoadIconthemeSettings); - RegisterNamespace("ICONTHEME", 0, 0, tmplput_icontheme, NULL, CTX_NONE); - - RegisterIterator("PREF:VALID:THEME", 0, NULL, - GetValidThemeHash, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG); -} - -void -ServerShutdownModule_ICONTHEME -(void) -{ - DeleteHash(&AvailableThemes); -} - -void -SessionDestroyModule_ICONTHEME -(wcsession *sess) -{ - FreeStrBuf(&sess->IconTheme); -} -