123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #ifndef __THEMESLIST_H
- #define __THEMESLIST_H
- #include <api/wnd/wndclass/listwnd.h>
- #include <api/skin/nakedobject.h>
- #include <api/service/svcs/svc_action.h>
- class ThemesSlotActionSvc : public svc_actionI {
- public:
- ThemesSlotActionSvc() {
- registerAction(L"ThemesSlotsMenu", 0);
- }
- virtual ~ThemesSlotActionSvc() {}
- virtual int onActionId(int pvtid, const wchar_t *action, const wchar_t *param=NULL, int p1=0, int p2=0, void *data=NULL, int datalen=0, ifc_window *source=NULL);
- static const char *getServiceName() { return "ThemesSlotMenu Service"; }
- };
- #define THEMESLIST_PARENT ListWnd
- #define THEMESLIST2_PARENT NakedObject
- // -----------------------------------------------------------------------
- class ColorThemesList : public THEMESLIST_PARENT, public SkinCallbackI
- {
-
- public:
- ColorThemesList();
- virtual ~ColorThemesList();
- virtual int onInit();
- virtual void onDoubleClick(int itemnum);
- virtual int onPaint(Canvas *canvas);
- virtual int onRightClick(int itemnum);
- virtual int onAction(const wchar_t *action, const wchar_t *param, int x, int y, intptr_t p1, intptr_t p2, void *data, size_t datalen, ifc_window *source);
- virtual int onResize();
- virtual int wantResizeCols() { return 0; }
- virtual int setXuiParam(int _xuihandle, int xmlattrid, const wchar_t *name, const wchar_t *value);
- virtual int wantHScroll() { return !nohscroll; }
- virtual int getTextBold(LPARAM lParam);
- virtual void onSetVisible(int show);
- virtual int skincb_onColorThemesListChanged() { loadThemes(); return 1;}
- enum {
- CTLIST_NOHSCROLL = 0,
- };
- static void setSlot(int s, const wchar_t *set);
- static const wchar_t *getSlot(int s);
- protected:
- /*static */void CreateXMLParameters(int master_handle);
- private:
- static XMLParamPair params[];
- void colorthemes_switch();
- void colorthemes_next();
- void colorthemes_previous();
- void colorthemes_advance(int i);
- void loadThemes();
- int xuihandle;
- int nohscroll;
- int ensure_on_paint;
- };
- // -----------------------------------------------------------------------
- class NakedItem
- {
- public:
- NakedItem(const wchar_t *_name, int _p) : name(_name), data(_p) {}
- virtual ~NakedItem() {}
- const wchar_t *getName() { return name; }
- int getData() { return data; }
- private:
- StringW name;
- int data;
- };
- // -----------------------------------------------------------------------
- class NakedItemSort {
- public:
- // comparator for sorting
- static int compareItem(NakedItem *p1, NakedItem *p2) {
- return _wcsicmp(p1->getName(), p2->getName());
- }
- // comparator for searching
- static int compareAttrib(const wchar_t *attrib, NakedItem *item) {
- return _wcsicmp(attrib, item->getName());
- }
- };
- // -----------------------------------------------------------------------
- class NakedColorThemesList : public THEMESLIST2_PARENT, public SkinCallbackI
- {
-
- public:
- NakedColorThemesList();
- virtual ~NakedColorThemesList();
- virtual int onAction(const wchar_t *action, const wchar_t *param, int x, int y, intptr_t p1, intptr_t p2, void *data, size_t datalen, ifc_window *source);
- virtual void onSetVisible(int show);
- virtual int skincb_onColorThemesListChanged() { loadThemes(); return 1;}
- private:
-
- PtrListQuickSorted<NakedItem, NakedItemSort> items;
- void colorthemes_switch();
- void colorthemes_next();
- void colorthemes_previous();
- void colorthemes_advance(int i);
- void loadThemes();
- int xuihandle;
- };
- // -----------------------------------------------------------------------
- extern const wchar_t ColorThemesListXuiObjectStr[];
- extern char ColorThemesListXuiSvcName[];
- class ColorThemesListXuiSvc : public XuiObjectSvc<ColorThemesList, ColorThemesListXuiObjectStr, ColorThemesListXuiSvcName> {};
- extern const wchar_t NakedColorThemesListXuiObjectStr[];
- extern char NakedColorThemesListXuiSvcName[];
- class NakedColorThemesListXuiSvc : public XuiObjectSvc<NakedColorThemesList, NakedColorThemesListXuiObjectStr, NakedColorThemesListXuiSvcName> {};
- #endif
|