* we need to decode preferences on load, so the preference evaluator callback gets the actual value
InitModule_CALENDAR
(void)
{
- RegisterPreference(HKEY("daystart"), _("Calendar day view begins at:"), PRF_INT, NULL);
- RegisterPreference(HKEY("dayend"), _("Calendar day view ends at:"), PRF_INT, NULL);
- RegisterPreference(HKEY("weekstart"), _("Week starts on:"), PRF_INT, NULL);
+ RegisterPreference("daystart", _("Calendar day view begins at:"), PRF_INT, NULL);
+ RegisterPreference("dayend", _("Calendar day view ends at:"), PRF_INT, NULL);
+ RegisterPreference("weekstart", _("Week starts on:"), PRF_INT, NULL);
WebcitAddUrlHandler(HKEY("display_edit_task"), display_edit_task, 0);
WebcitAddUrlHandler(HKEY("save_task"), save_task, 0);
InitModule_DATETIME
(void)
{
- RegisterPreference(HKEY("calhourformat"), _("Time format"), PRF_INT, LoadTimeformatSettingsCache);
+ RegisterPreference("calhourformat", _("Time format"), PRF_INT, LoadTimeformatSettingsCache);
}
InitModule_MSG
(void)
{
- RegisterPreference(HKEY("use_sig"),
+ RegisterPreference("use_sig",
_("Attach signature to email messages?"),
PRF_YESNO,
NULL);
- RegisterPreference(HKEY("signature"), _("Use this signature:"), PRF_QP_STRING, NULL);
- RegisterPreference(HKEY("default_header_charset"),
+ RegisterPreference("signature", _("Use this signature:"), PRF_QP_STRING, NULL);
+ RegisterPreference("default_header_charset",
_("Default character set for email headers:"),
PRF_STRING,
NULL);
- RegisterPreference(HKEY("defaultfrom"), _("Preferred email address"), PRF_STRING, NULL);
- RegisterPreference(HKEY("defaultname"),
+ RegisterPreference("defaultfrom", _("Preferred email address"), PRF_STRING, NULL);
+ RegisterPreference("defaultname",
_("Preferred display name for email messages"),
PRF_STRING,
NULL);
- RegisterPreference(HKEY("defaulthandle"),
+ RegisterPreference("defaulthandle",
_("Preferred display name for bulletin board posts"),
PRF_STRING,
NULL);
- RegisterPreference(HKEY("mailbox"),_("Mailbox view mode"), PRF_STRING, NULL);
+ RegisterPreference("mailbox",_("Mailbox view mode"), PRF_STRING, NULL);
WebcitAddUrlHandler(HKEY("readnew"), h_readnew, NEED_URL);
WebcitAddUrlHandler(HKEY("readold"), h_readold, NEED_URL);
StrBuf *Setting;
const char *PrefStr;
PrefEvalFunc OnLoad;
+ StrBuf *OnLoadName;
} PrefDef;
typedef struct _Preference {
{
PrefDef *Prefdef = (PrefDef*) vPrefDef;
FreeStrBuf(&Prefdef->Setting);
+ FreeStrBuf(&Prefdef->OnLoadName);
free(Prefdef);
}
free(Pref);
}
-void RegisterPreference(const char *Setting, long SettingLen,
- const char *PrefStr,
- long Type,
- PrefEvalFunc OnLoad)
+void _RegisterPreference(const char *Setting, long SettingLen,
+ const char *PrefStr,
+ long Type,
+ PrefEvalFunc OnLoad,
+ const char *OnLoadName)
{
PrefDef *Newpref = (PrefDef*) malloc(sizeof(PrefDef));
Newpref->Setting = NewStrBufPlain(Setting, SettingLen);
Newpref->PrefStr = PrefStr;
Newpref->Type = Type;
Newpref->OnLoad = OnLoad;
+ if (Newpref->OnLoad != NULL) {
+ Newpref->OnLoadName = NewStrBufPlain(OnLoadName, -1);
+ }
+ else
+ Newpref->OnLoadName = NULL;
Put(PreferenceHooks, Setting, SettingLen, Newpref, DestroyPrefDef);
}
const char *Key;
void *vSetting;
void *vPrefDef;
- Preference *Setting;
+ Preference *Pref;
PrefDef *PrefType;
It = GetNewHashPos(List, 0);
while (GetNextHashPos(List, It, &len, &Key, &vSetting))
{
- Setting = (Preference*) vSetting;
- if (GetHash(PreferenceHooks, SKEY(Setting->Key), &vPrefDef) &&
+ Pref = (Preference*) vSetting;
+ if (GetHash(PreferenceHooks, SKEY(Pref->Key), &vPrefDef) &&
(vPrefDef != NULL))
{
PrefType = (PrefDef*) vPrefDef;
- Setting->Type = PrefType;
- if (PrefType->OnLoad != NULL)
- PrefType->OnLoad(Setting->Val, Setting->lval);
+ Pref->Type = PrefType;
+
+ lprintf(1, "Loading [%s]with type [%ld] [\"%s\"]\n",
+ ChrPtr(Pref->Key),
+ Pref->Type->Type,
+ ChrPtr(Pref->Val));
+
+ switch (Pref->Type->Type)
+ {
+
+ case PRF_STRING:
+ break;
+ case PRF_INT:
+ Pref->lval = StrTol(Pref->Val);
+ Pref->decoded = 1;
+ break;
+ case PRF_QP_STRING:
+ Pref->DeQPed = NewStrBufPlain(NULL, StrLength(Pref->Val));
+ StrBufEUid_unescapize(Pref->DeQPed, Pref->Val);
+ Pref->decoded = 1;
+ break;
+ case PRF_YESNO:
+ Pref->lval = strcmp(ChrPtr(Pref->Val), "yes") == 0;
+ Pref->decoded = 1;
+ break;
+ }
+
+ if (PrefType->OnLoad != NULL){
+
+ lprintf(1, "Loading with: -> %s(\"%s\", %ld)\n",
+ ChrPtr(PrefType->OnLoadName),
+ ChrPtr(Pref->Val),
+ Pref->lval);
+ PrefType->OnLoad(Pref->Val, Pref->lval);
+ }
}
}
DeleteHashPos(&It);
typedef void (*PrefEvalFunc)(StrBuf *Preference, long lvalue);
-void RegisterPreference(const char *Setting, long SettingLen,
- const char *PrefStr,
- long Type,
- PrefEvalFunc OnLoad);
+void _RegisterPreference(const char *Setting, long SettingLen,
+ const char *PrefStr,
+ long Type,
+ PrefEvalFunc OnLoad,
+ const char *OnLoadName);
+
+#define RegisterPreference(a, b, c, d) _RegisterPreference(a, sizeof(a) -1, b, c, d, #d)
void load_preferences(void);
void save_preferences(void);
InitModule_ROOMOPS
(void)
{
- RegisterPreference(HKEY("roomlistview"),
+ RegisterPreference("roomlistview",
_("Room list view"),
PRF_STRING,
NULL);
- RegisterPreference(HKEY("emptyfloors"), _("Show empty floors"), PRF_YESNO, NULL);
+ RegisterPreference("emptyfloors", _("Show empty floors"), PRF_YESNO, NULL);
RegisterNamespace("ROOMNAME", 0, 1, tmplput_RoomName, 0);