first release
[groupsms] / sms / xmlcontroler.h
diff --git a/sms/xmlcontroler.h b/sms/xmlcontroler.h
new file mode 100644 (file)
index 0000000..d53f0dd
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef XMLCONTROLER_H
+#define XMLCONTROLER_H
+
+#include <QObject>
+#include <QtXml>
+
+#include "contactwidgetitem.h"
+#include "itemobserver.h"
+
+class XmlControler : public QObject
+{
+    Q_OBJECT
+public:
+    static XmlControler* getInstance();
+    ~XmlControler();
+
+    void setItemObserver( ItemObserver *observer );
+    void setItemSelectObserver( ItemSelectObserver *observer );
+
+    bool newXml( const QString &filename );
+    bool newXml( QIODevice *device );
+
+    bool readXml( const QString &filename );
+    bool readXml( QIODevice *device );
+
+    bool writeXml( QIODevice *device );
+    bool writeXml();
+
+    void closeXmlFile();
+
+    bool createGroup(const QString &groupname);
+    bool createContact(const QString &group, ItemListPtr contacts);
+    bool createContact(const QString &group, Item *contact);
+    bool createContact(QDomNode *group, Item *contact);
+
+    bool removeGroup(const QString &groupname);
+    bool removeContact(const QString &group, Item *contact);
+    bool removeContact(QDomNode group, Item *contact);
+    bool removeContact( Item *contact );
+    bool removeContactFromGroup( ItemListPtr items, const QString &groupname );
+    bool removeContactFromGroup( ItemListPtr items );
+
+    void getAllContactItems();
+    void getAllContactItemsFromGroup( QString groupname );
+
+    QStringList getAllGroupNames();
+
+
+private:
+    static XmlControler* instance;
+    XmlControler( QObject *parent = 0 );
+
+    bool createAllContacts();
+    QDomNode findGroup(const QString &groupname);
+    QDomNode findContact(const QString &groupname, Item *contact);
+    QDomNode findContact(QDomNode group, Item *contact);
+
+    bool cleanAllContacts();
+    bool cleanAllContactsGroup();
+
+private:
+    ItemObserver *itemObserver;
+    ItemSelectObserver *itemSelectObserver;
+
+    QDomDocument m_DomDoc;
+
+    ItemListPtr all_contacts_items;
+    ItemListPtr all_contacts_items_group;
+
+    QFile *m_XmlFileOut;
+    QFile *m_XmlFileIn;
+    QString m_filename;
+
+    bool foundgroup;
+    bool foundcontact;
+
+    QString old_groupname;
+
+Q_SIGNALS:
+
+public Q_SLOTS:
+
+};
+
+#endif // XMLCONTROLER_H