#ifndef __AUTOPOPUP_H #define __AUTOPOPUP_H #include #include class AutoPopupEntry; class AutoPopupEntrySort; #define SKINPARTID_NONE -1 class AutoPopup { public: static int registerGuid(int skinpartid/*SKINPARTID_NONE*/, GUID g, const wchar_t *desc, const wchar_t *prefered_container=NULL, int required=FALSE); static int registerGroupId(int skinpartid/*SKINPARTID_NONE*/, const wchar_t *groupid, const wchar_t *desc, const wchar_t *prefered_container=NULL, int required=FALSE); static void unregister(int id); static int getNumItems(); static AutoPopupEntry *enumItem(int n); static AutoPopupEntry *getByDesc(const wchar_t *desc); static void reset(); static void removeSkinPart(int id); static int allocNid(); static void removeAllAddons(); static int getNumGuids(); static GUID enumGuid(int n); static int getNumGroups(); static const wchar_t *enumGroup(int n); static const wchar_t *enumGuidDescription(int n); static const wchar_t *enumGroupDescription(int n); static const wchar_t *getDefaultContainerParams(const wchar_t *groupid, GUID g, int *flag); }; class AutoPopupEntry { public: AutoPopupEntry(int skinpartid, GUID g, const wchar_t *grpid, const wchar_t *description, const wchar_t *prefered_container=NULL, int required=TRUE) : guid(g), groupid(grpid), desc(description), container(prefered_container), container_how(required), skinpart(skinpartid) { nid = AutoPopup::allocNid(); } virtual ~AutoPopupEntry() { } GUID getGuid() { return guid; } const wchar_t *getGroupId() { return groupid; } const wchar_t *getDescription() { return desc; } int getNid() { return nid; } const wchar_t *getPreferedContainer() { return container; } int getContainerHow() { return container_how; } int getSkinpart() { return skinpart; } private: GUID guid; StringW groupid; StringW desc; int nid; StringW container; int container_how; int skinpart; }; class AutoPopupEntrySort { public: static int compareItem(AutoPopupEntry *p1, AutoPopupEntry *p2) { return WCSICMP(p1->getDescription(), p2->getDescription()); } static int compareAttrib(const wchar_t *attrib, AutoPopupEntry *item) { return WCSICMP(attrib, item->getDescription()); } }; #endif