typedef struct _floor {
- long ID;
+ int ID;
StrBuf *Name;
long NRooms;
long AlphaN;
-} floor;
+} Floor;
/**
* \brief Data structure for roomlist-to-folderlist conversion
*/
typedef struct _folder {
/* Data citserver tells us about the room */
+ long QRFlags; /* roomflags */
+ long QRFlags2; /* Bitbucket NO2 */
+ long RAFlags;
+
+ int view; /* whats its default view? inbox/calendar.... */
+ long defview;
+ long lastchange; /* todo... */
+
+ /* later evaluated data from the serverdata */
StrBuf *name; /* the full name of the room we're talking about */
- int QRFlags; /* roomflags */
+ long nRoomNameParts;
+ StrBuf **RoomNameParts;
+
int floorid; /* which floor is it on */
+ const Floor *Floor; /* point to the floor we're on.. */
+ int hasnewmsgs; /* are there unread messages inside */
+ int is_inbox; /* is it a mailbox? */
+
+ int RoomAideLoaded;
+ StrBuf *RoomAide;
+
+/* only available if GETR was run */
+ int XALoaded;
+ StrBuf *XAPass;
+ StrBuf *Directory;
+ long Order;
+
+/* Only available from the GOTO context... */
+ long nNewMessages;
+ long nTotalMessages;
+ long LastMessageRead;
+ long HighestRead;
+ int ShowInfo;
+ int UsersNewMAilboxMessages; /* should we notify the user about new messages? */
+ int IsTrash;
+/* Only available if certain other commands ran */
+ int XHaveRoomPic;
+ int XHaveRoomPicLoaded;
+
+ int XHaveInfoTextLoaded;
+ StrBuf *XInfoText;
+
+ int XHaveDownloadCount;
+ int XDownloadCount;
+
+ int BumpUsers; /* if SETR set to 1 to make all users who knew this room to forget about it. */
+
+ HashList *IgnetCfgs[maxRoomNetCfg + 1];
+}folder;
- int listorder; /* todo */
+HashList *GetFloorListHash(StrBuf *Target, WCTemplputParams *TP);
+void vDeleteFolder(void *vFolder);
+void FlushFolder(folder *room);
+void FlushIgnetCfgs(folder *room);
+void ParseGoto(folder *proom, StrBuf *Line);
+void FlushRoomlist(void); /* release our caches, so a deleted / zapped room disapears */
+void ReloadCurrentRoom(void); /* Flush cache; reload current state */
- StrBuf *ACL; /* access Control list... */
+HashList *GetFloorListHash(StrBuf *Target, WCTemplputParams *TP);
+HashList *GetRoomListHash(StrBuf *Target, WCTemplputParams *TP);
+int SortRoomsByListOrder(const void *room1, const void *room2);
+void tmplput_roombanner(StrBuf *Target, WCTemplputParams *TP);
- int view; /* whats its default view? inbox/calendar.... */
- int defview;
- int lastchange; /* todo... */
- /* later evaluated data from the serverdata */
- long nRoomNameParts;
- StrBuf **RoomNameParts;
+void LoadRoomAide(void);
+void LoadRoomXA (void);
+void LoadXRoomPic(void);
+void LoadXRoomInfoText(void);
+void LoadXRoomXCountFiles(void);
- const floor *Floor; /* pint to the floor we're on.. */
- StrBuf *room; /* which roomname ??? */
+long gotoroom(const StrBuf *gname);
+void slrp_highest(void);
+void remove_march(const StrBuf *aaa);
+void dotskip(void);
+void smart_goto(const StrBuf *next_room);
+void free_march_list(wcsession *wcf);
- int hasnewmsgs; /* are there unread messages inside */
- int is_mailbox; /* is it a mailbox? */
- int selectable; /* can we select it ??? */
- int num_rooms; /* If this is a floor, how many rooms does it have */
+/*
+ * wrapper around usual sort-comparator; private rooms will allways be prefered, -1 if one of them NULL
+ */
+int CompareRooms(const folder *room1, const folder *room2);
-}folder;
+
+#define REST_TOPLEVEL 0
+#define REST_IN_NAMESPACE (1<<0)
+#define REST_IN_FLOOR (1<<1)
+#define REST_IN_ROOM (1<<2)
+#define REST_HAVE_SUB_ROOMS (1<<3)
+#define REST_GOT_LOCAL_PART (1<<4)
+#define REST_NONEXIST (1<<5)