aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/wndmgr/autopopup.h
diff options
context:
space:
mode:
authorJean-Francois Mauguit <jfmauguit@mac.com>2024-09-24 09:03:25 -0400
committerGitHub <noreply@github.com>2024-09-24 09:03:25 -0400
commitbab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/wndmgr/autopopup.h
parent4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff)
parent20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff)
downloadwinamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/Wasabi/api/wndmgr/autopopup.h')
-rw-r--r--Src/Wasabi/api/wndmgr/autopopup.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/Src/Wasabi/api/wndmgr/autopopup.h b/Src/Wasabi/api/wndmgr/autopopup.h
new file mode 100644
index 00000000..c37bd122
--- /dev/null
+++ b/Src/Wasabi/api/wndmgr/autopopup.h
@@ -0,0 +1,76 @@
+#ifndef __AUTOPOPUP_H
+#define __AUTOPOPUP_H
+
+#include <bfc/ptrlist.h>
+#include <bfc/string/StringW.h>
+
+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