winix/notify/notifypool.h

97 lines
1.9 KiB
C++
Executable File

/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* All rights reserved.
*
*/
#ifndef headerfilecmslunotifypool
#define headerfilecmslunotifypool
#include <list>
#include <string>
#include "templates/locale.h"
#define WINIX_NOTIFY_CODE_DIR_ADD 1
#define WINIX_NOTIFY_CODE_DIR_EDIT 2
#define WINIX_NOTIFY_CODE_DIR_DELETE 4
#define WINIX_NOTIFY_CODE_FILE_ADD 8
#define WINIX_NOTIFY_CODE_FILE_EDIT 16
#define WINIX_NOTIFY_CODE_FILE_DELETE 32
// new thread has been starded
#define WINIX_NOTIFY_CODE_THREAD_ADD 64
// someone replayed in a thread
#define WINIX_NOTIFY_CODE_THREAD_REPLAYED 128
// someone edited its post
#define WINIX_NOTIFY_CODE_THREAD_POST_CHANGED 256
#define WINIX_NOTIFY_CODE_THREAD_DELETE 512
// additional codes, use it of your own
// you should prepare NotifyMsg structure and use it with ItemChanged method of notify object
// remember that from this code an appropirate user is selected (db->core->user notify value)
// and ezc templates may behave differently
#define WINIX_NOTIFY_CODE_USER1 1024
#define WINIX_NOTIFY_CODE_USER2 2048
#define WINIX_NOTIFY_CODE_USER3 4096
#define WINIX_NOTIFY_CODE_USER4 8192
#define WINIX_NOTIFY_CODE_USER5 16384
#define WINIX_NOTIFY_CODE_USER6 32768
#define WINIX_NOTIFY_CODE_USER7 65536
#define WINIX_NOTIFY_CODE_USER8 131072
struct NotifyMsg
{
int code;
std::wstring item_link; // link to a file or a dir (can be the same as dir_link if the item is a directory)
std::wstring dir_link; // link to a dir
size_t template_index;
};
// used by the second thread (and its templates)
struct NotifyUserMsg
{
std::wstring name;
std::wstring email;
Locale::Lang lang;
};
class NotifyPool
{
public:
bool Empty() const;
size_t Size() const;
NotifyMsg & GetFirst();
void DeleteFirst();
void Add(const NotifyMsg & msg);
private:
std::list<NotifyMsg> notify_pool;
};
#endif