first release
[groupsms] / sms / xmlcontroler.h
1 #ifndef XMLCONTROLER_H
2 #define XMLCONTROLER_H
3
4 #include <QObject>
5 #include <QtXml>
6
7 #include "contactwidgetitem.h"
8 #include "itemobserver.h"
9
10 class XmlControler : public QObject
11 {
12     Q_OBJECT
13 public:
14     static XmlControler* getInstance();
15     ~XmlControler();
16
17     void setItemObserver( ItemObserver *observer );
18     void setItemSelectObserver( ItemSelectObserver *observer );
19
20     bool newXml( const QString &filename );
21     bool newXml( QIODevice *device );
22
23     bool readXml( const QString &filename );
24     bool readXml( QIODevice *device );
25
26     bool writeXml( QIODevice *device );
27     bool writeXml();
28
29     void closeXmlFile();
30
31     bool createGroup(const QString &groupname);
32     bool createContact(const QString &group, ItemListPtr contacts);
33     bool createContact(const QString &group, Item *contact);
34     bool createContact(QDomNode *group, Item *contact);
35
36     bool removeGroup(const QString &groupname);
37     bool removeContact(const QString &group, Item *contact);
38     bool removeContact(QDomNode group, Item *contact);
39     bool removeContact( Item *contact );
40     bool removeContactFromGroup( ItemListPtr items, const QString &groupname );
41     bool removeContactFromGroup( ItemListPtr items );
42
43     void getAllContactItems();
44     void getAllContactItemsFromGroup( QString groupname );
45
46     QStringList getAllGroupNames();
47
48
49 private:
50     static XmlControler* instance;
51     XmlControler( QObject *parent = 0 );
52
53     bool createAllContacts();
54     QDomNode findGroup(const QString &groupname);
55     QDomNode findContact(const QString &groupname, Item *contact);
56     QDomNode findContact(QDomNode group, Item *contact);
57
58     bool cleanAllContacts();
59     bool cleanAllContactsGroup();
60
61 private:
62     ItemObserver *itemObserver;
63     ItemSelectObserver *itemSelectObserver;
64
65     QDomDocument m_DomDoc;
66
67     ItemListPtr all_contacts_items;
68     ItemListPtr all_contacts_items_group;
69
70     QFile *m_XmlFileOut;
71     QFile *m_XmlFileIn;
72     QString m_filename;
73
74     bool foundgroup;
75     bool foundcontact;
76
77     QString old_groupname;
78
79 Q_SIGNALS:
80
81 public Q_SLOTS:
82
83 };
84
85 #endif // XMLCONTROLER_H