#ifndef __THEMESLIST_H #define __THEMESLIST_H #include #include #include 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 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 {}; extern const wchar_t NakedColorThemesListXuiObjectStr[]; extern char NakedColorThemesListXuiSvcName[]; class NakedColorThemesListXuiSvc : public XuiObjectSvc {}; #endif