summaryrefslogtreecommitdiffstats
path: root/tdelirc/tdelirc/profileserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'tdelirc/tdelirc/profileserver.h')
-rw-r--r--tdelirc/tdelirc/profileserver.h142
1 files changed, 142 insertions, 0 deletions
diff --git a/tdelirc/tdelirc/profileserver.h b/tdelirc/tdelirc/profileserver.h
new file mode 100644
index 0000000..0d9bc59
--- /dev/null
+++ b/tdelirc/tdelirc/profileserver.h
@@ -0,0 +1,142 @@
+//
+//
+// C++ Interface: $MODULE$
+//
+// Description:
+//
+//
+// Author: Gav Wood <gav@kde.org>, (C) 2003
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef PROFILESERVER_H
+#define PROFILESERVER_H
+
+#include <tqpair.h>
+#include <tqstring.h>
+#include <tqvaluelist.h>
+#include <tqmap.h>
+#include <tqxml.h>
+#include <tqdict.h>
+
+/**
+@author Gav Wood
+*/
+
+enum IfMulti {IM_DONTSEND, IM_SENDTOALL, IM_SENDTOTOP, IM_SENDTOBOTTOM};
+
+typedef TQPair<int,int> Range;
+
+class ProfileAction;
+class Profile;
+
+class ProfileActionArgument
+{
+ TQString theComment, theType;
+ Range theRange;
+ TQString theDefault; // should be TQVariant?
+ const ProfileAction *parent;
+
+ friend class Profile;
+public:
+ const TQString &comment() const { return theComment; }
+ void setComment(const TQString &a) { theComment = a; }
+ const TQString &type() const { return theType; }
+ void setType(const TQString &a) { theType = a; }
+ const TQString &getDefault() const { return theDefault; }
+ void setDefault(const TQString &a) { theDefault = a; }
+ const Range &range() const { return theRange; }
+ void setRange(const Range &a) { theRange = a; }
+
+ const ProfileAction *action() const { return parent; }
+ void setAction(const ProfileAction *a) { parent = a; }
+};
+
+class ProfileAction
+{
+ TQString theObjId, thePrototype, theName, theComment, theClass;
+ float theMultiplier;
+ const Profile *parent;
+ bool theRepeat, theAutoStart;
+ TQValueList<ProfileActionArgument> theArguments;
+
+ friend class Profile;
+public:
+ const TQString &objId() const { return theObjId; }
+ void setObjId(const TQString &a) { theObjId = a; }
+ const TQString &prototype() const { return thePrototype; }
+ void setPrototype(const TQString &a) { thePrototype = a; }
+ const TQString &name() const { return theName; }
+ void setName(const TQString &a) { theName = a; }
+ const TQString &comment() const { return theComment; }
+ void setComment(const TQString &a) { theComment = a; }
+ const TQString &getClass() const { return theClass; }
+ void setClass(const TQString &a) { theClass = a; }
+ const float multiplier() const { return theMultiplier; }
+ void setMultiplier(const float a) { theMultiplier = a; }
+ bool repeat() const { return theRepeat; }
+ void setRepeat(bool a) { theRepeat = a; }
+ bool autoStart() const { return theAutoStart; }
+ void setAutoStart(bool a) { theAutoStart = a; }
+ const TQValueList<ProfileActionArgument> &arguments() const { return theArguments; }
+
+ const Profile *profile() const { return parent; }
+ void setProfile(const Profile *a) { parent = a; }
+};
+
+class Profile : public TQXmlDefaultHandler
+{
+ TQString theId, theName, theAuthor, theServiceName;
+ IfMulti theIfMulti;
+ bool theUnique;
+ TQString charBuffer;
+
+ ProfileAction *curPA;
+ ProfileActionArgument *curPAA;
+ TQDict<ProfileAction> theActions; // objid+"::"+prototype => ProfileAction
+
+ friend class ProfileServer;
+public:
+ bool characters(const TQString &data);
+ bool startElement(const TQString &, const TQString &, const TQString &name, const TQXmlAttributes &attributes);
+ bool endElement(const TQString &, const TQString &, const TQString &name);
+
+ const TQString &id() const { return theId; }
+ void setId(const TQString &a) { theId = a; }
+ const TQString &name() const { return theName; }
+ void setName(const TQString &a) { theName = a; }
+ const TQString &author() const { return theAuthor; }
+ void setAuthor(const TQString &a) { theAuthor = a; }
+ const bool unique() const { return theUnique; }
+ void setUnique(const bool a) { theUnique = a; }
+ const IfMulti ifMulti() const { return theIfMulti; }
+ void setIfMulti(const IfMulti a) { theIfMulti = a; }
+ const TQString &serviceName() const { if(theServiceName != TQString()) return theServiceName; return theName; }
+ void setServiceName(const TQString &a) { theServiceName = a; }
+ const TQDict<ProfileAction> &actions() const { return theActions; }
+ const ProfileAction *searchClass(const TQString &c) const;
+
+ void loadFromFile(const TQString &fileName);
+
+ Profile();
+};
+
+class ProfileServer
+{
+ static ProfileServer *theInstance;
+ void loadProfiles();
+ TQDict<Profile> theProfiles; // id => Profile
+
+public:
+ static ProfileServer *profileServer() { if(!theInstance) theInstance = new ProfileServer(); return theInstance; }
+ const TQDict<Profile> profiles() const { return theProfiles; }
+ const ProfileAction *getAction(const TQString &appId, const TQString &objId, const TQString &prototype) const;
+ const ProfileAction *getAction(const TQString &appId, const TQString &actionId) const;
+ const TQString &getServiceName(const TQString &appId) const;
+
+ ProfileServer();
+ ~ProfileServer();
+};
+
+#endif