00001 #ifndef __Q_IBUS_COMPONENT_H_
00002 #define __Q_IBUS_COMPONENT_H_
00003
00004 #include <QFile>
00005 #include <QDebug>
00006 #include <QVector>
00007 #include <QProcess>
00008 #include <QXmlStreamWriter>
00009 #include <QtXml/QDomNode>
00010 #include "qibusserializable.h"
00011 #include "qibusenginedesc.h"
00012 #include "qibusobservedpath.h"
00013
00014 namespace IBus {
00015
00016 class Component;
00017 typedef Pointer<Component> ComponentPointer;
00018
00019 class Component : public Serializable
00020 {
00021 Q_OBJECT;
00022
00023 public:
00024 Component () {}
00025 Component (const QString & name,
00026 const QString & desc,
00027 const QString & vers,
00028 const QString & lics,
00029 const QString & auth,
00030 const QString & hmpg,
00031 const QString & exec,
00032 const QString & textdomain):
00033 m_name(name),
00034 m_description(desc),
00035 m_version(vers),
00036 m_license(lics),
00037 m_author(auth),
00038 m_homepage(hmpg),
00039 m_exec(exec),
00040 m_textdomain(textdomain) {}
00041
00042 virtual ~Component () {}
00043
00044 public:
00045 virtual bool serialize (QDBusArgument &argument);
00046 virtual bool deserialize (const QDBusArgument &argument);
00047
00048 void output (QString &output) const;
00049 bool parseXmlNode (const QDomNode &node);
00050
00051
00052
00053 void addObservedPath (const ObservedPathPointer &obsPath);
00054 void addEngine (const EngineDescPointer &edp);
00055
00056 QVector<ObservedPathPointer> observedPaths () const;
00057 const QVector<EngineDescPointer> & engines () const;
00058
00059 #if 0
00060
00061 bool start (bool verbose) const;
00062 bool stop () const;
00063 bool isRunning () const;
00064 bool isComponentModified () const;
00065 const ComponentPointer getComponentFromEngine (EngineDescPointer edp) const;
00066
00067
00068 friend bool newComponentFromFile (Component &obj, const QString & filename);
00069
00070 private:
00071 const QDomDocument * parseXmlFile (const QString & filename) const;
00072 const QDomDocument * parseXmlBuffer (const QByteArray & buf);
00073
00074 #endif
00075
00076 private:
00077 QString m_name;
00078 QString m_description;
00079 QString m_version;
00080 QString m_license;
00081 QString m_author;
00082 QString m_homepage;
00083 QString m_exec;
00084 QString m_textdomain;
00085
00086 QVector<ObservedPathPointer> m_observedPaths;
00087 QVector<EngineDescPointer> m_engines;
00088
00089 IBUS_SERIALIZABLE
00090 };
00091
00092 };
00093
00094 #endif