]> code.citadel.org Git - citadel.git/blobdiff - webcit/preferences.c
* abstract setting per room preferences
[citadel.git] / webcit / preferences.c
index 79ec5d0504427041936c2ffa7d5988156a5b27fa..437287b767e066536ad89d3a970676a9b38519af 100644 (file)
@@ -9,10 +9,12 @@
 #include "webserver.h"
 #include "groupdav.h"
 
+#ifdef DBG_PREFS_HASH
 inline const char *PrintPref(void *Prefstr)
 {
        return ChrPtr(Prefstr);
 }
+#endif
 
 /*
  * display preferences dialog
@@ -78,6 +80,7 @@ void load_preferences(void) {
                                }
                                FreeStrBuf(&Key);
                        }
+                       FreeStrBuf(&ReadBuf);
                }
        }
 
@@ -140,7 +143,9 @@ void save_preferences(void) {
                StrBuf *SubBuf = NULL;
                
                Hash = WC->hash_prefs;
+#ifdef DBG_PREFS_HASH
                dbg_PrintHash(Hash, PrintPref, NULL);
+#endif
                HashPos = GetNewHashPos();
                while (GetNextHashPos(Hash, HashPos, &len, &Key, &Value)!=0)
                {
@@ -201,8 +206,9 @@ void save_preferences(void) {
 int get_PREFERENCE(const char *key, size_t keylen, StrBuf **value)
 {
        void *hash_value = NULL;
-       
+#ifdef DBG_PREFS_HASH
        dbg_PrintHash(WC->hash_prefs, PrintPref, NULL);
+#endif
        if (GetHash(WC->hash_prefs, key, keylen, &hash_value) == 0) {
                *value = NULL;
                return 0;
@@ -288,6 +294,27 @@ void set_PREF_YESNO(const char *key, size_t keylen, int value, int save_to_serve
        }
 }
 
+StrBuf *get_ROOM_PREFS(const char *key, size_t keylen)
+{
+       StrBuf *pref_name, *pref_value;
+       
+       pref_name = NewStrBuf ();
+       StrBufPrintf(pref_name, "%s %s", key, WC->wc_roomname);
+       get_pref(pref_name, &pref_value);
+       FreeStrBuf(&pref_name);
+       return pref_value;
+}
+
+void set_ROOM_PREFS(const char *key, size_t keylen, StrBuf *value, int save_to_server)
+{
+       StrBuf *pref_name;
+       
+       pref_name = NewStrBuf ();
+       StrBufPrintf(pref_name, "%s %s", key, WC->wc_roomname);
+       set_PREFERENCE(ChrPtr(pref_name), StrLength(pref_name), value, save_to_server);
+       FreeStrBuf(&pref_name);
+}
+
 /** 
  * \brief display form for changing your preferences and settings
  */