20#include "kexiactioncategories.h"
22#include <kstaticdeleter.h>
26#include <tqasciidict.h>
34 ActionInternal( int _categories)
35 : categories(_categories)
36 , supportedObjectTypes(0)
37 , allObjectTypesAreSupported(false)
41 delete supportedObjectTypes;
44 TQMap<int, bool> *supportedObjectTypes;
45 bool allObjectTypesAreSupported : 1;
48static KStaticDeleter<ActionCategories> Kexi_actionCategoriesDeleter;
52class ActionCategories::Private
57 actions.setAutoDelete( true);
60 TQAsciiDict<ActionInternal> actions;
65 if (!Kexi_actionCategories)
66 Kexi_actionCategoriesDeleter.setObject( Kexi_actionCategories, new ActionCategories() );
67 return Kexi_actionCategories;
76ActionCategories::ActionCategories()
81ActionCategories::~ActionCategories()
87 KexiPart::ObjectTypes supportedObjectType1, KexiPart::ObjectTypes supportedObjectType2,
88 KexiPart::ObjectTypes supportedObjectType3, KexiPart::ObjectTypes supportedObjectType4,
89 KexiPart::ObjectTypes supportedObjectType5, KexiPart::ObjectTypes supportedObjectType6,
90 KexiPart::ObjectTypes supportedObjectType7, KexiPart::ObjectTypes supportedObjectType8)
92 ActionInternal * a = d->actions.find( name );
94 a->categories |= categories;
97 a = new ActionInternal(categories);
98 d->actions.insert(name, a);
100 if (supportedObjectType1) {
101 if (!a->supportedObjectTypes)
102 a->supportedObjectTypes = new TQMap<int, bool>();
103 a->supportedObjectTypes->insert(supportedObjectType1, true);
104 if (supportedObjectType2) {
105 a->supportedObjectTypes->insert(supportedObjectType2, true);
106 if (supportedObjectType3) {
107 a->supportedObjectTypes->insert(supportedObjectType3, true);
108 if (supportedObjectType4) {
109 a->supportedObjectTypes->insert(supportedObjectType4, true);
110 if (supportedObjectType5) {
111 a->supportedObjectTypes->insert(supportedObjectType5, true);
112 if (supportedObjectType6) {
113 a->supportedObjectTypes->insert(supportedObjectType6, true);
114 if (supportedObjectType7) {
115 a->supportedObjectTypes->insert(supportedObjectType7, true);
116 if (supportedObjectType8) {
117 a->supportedObjectTypes->insert(supportedObjectType8, true);
130 ActionInternal * a = d->actions.find( name );
132 a->allObjectTypesAreSupported = set;
134 kexiwarn << "ActionCategories::setAllObjectTypesSupported(): no such action \"" << name << "\"" << endl;
139 const ActionInternal * a = d->actions.find( name );
140 return a ? a->categories : 0;
145 const ActionInternal * a = d->actions.find( name );
146 if (a && a->allObjectTypesAreSupported)
148 return (a && a->supportedObjectTypes) ? a->supportedObjectTypes->contains(objectType) : false;
A set of functions used to declare action categories.
void addAction(const char *name, int categories, KexiPart::ObjectTypes supportedObjectType1=(KexiPart::ObjectTypes) 0, KexiPart::ObjectTypes supportedObjectType2=(KexiPart::ObjectTypes) 0, KexiPart::ObjectTypes supportedObjectType3=(KexiPart::ObjectTypes) 0, KexiPart::ObjectTypes supportedObjectType4=(KexiPart::ObjectTypes) 0, KexiPart::ObjectTypes supportedObjectType5=(KexiPart::ObjectTypes) 0, KexiPart::ObjectTypes supportedObjectType6=(KexiPart::ObjectTypes) 0, KexiPart::ObjectTypes supportedObjectType7=(KexiPart::ObjectTypes) 0, KexiPart::ObjectTypes supportedObjectType8=(KexiPart::ObjectTypes) 0)
void setAllObjectTypesSupported(const char *name, bool set)
bool actionSupportsObjectType(const char *name, KexiPart::ObjectTypes objectType) const
int actionCategories(const char *name) const
Namespace for general Kexi functions.
KEXICORE_EXPORT ActionCategories * actionCategories()
|