Added ContactManager class.
[situare] / src / ui / ossoabookdialog.cpp
1 #include "ossoabookdialog.h"
2 #include <QDebug>
3
4 OssoABookDialog::OssoABookDialog(QObject *parent) :
5     QObject(parent)
6 {
7 }
8
9 QStringList OssoABookDialog::contactChooser(const QString& windowTitle, OssoABookCapsFlags caps, OssoABookContactOrder order)
10 {
11     QStringList rtn;
12     GtkWidget* contactChooser = osso_abook_contact_chooser_new_with_capabilities (NULL, qPrintable(windowTitle), caps, order);
13
14     //Shows a modal dialog.
15     GList* contacts; // Do not free
16     if (gtk_dialog_run(GTK_DIALOG(contactChooser)) == GTK_RESPONSE_OK){
17       contacts = osso_abook_contact_chooser_get_selection(OSSO_ABOOK_CONTACT_CHOOSER(contactChooser));
18       while (contacts){
19           EContact* eContact = E_CONTACT(contacts->data);
20           const char* id = (const char*)e_contact_get_const(eContact, E_CONTACT_UID);
21           rtn << QString::fromLatin1(id);
22           contacts = contacts->next;
23       }
24     }
25     gtk_widget_destroy(contactChooser);
26
27     return rtn;
28 }
29
30 void OssoABookDialog::contactEditor(const QString& id){
31     OssoABookContact* contact = OssoABookDialog::lookup(id);
32
33     OssoABookContactEditorMode mode = (contact) ?  OSSO_ABOOK_CONTACT_EDITOR_EDIT : OSSO_ABOOK_CONTACT_EDITOR_CREATE;
34
35     GtkWidget* contactEditor = osso_abook_contact_editor_new_with_contact(NULL, contact, mode);
36     gtk_dialog_run(GTK_DIALOG(contactEditor));
37     gtk_widget_destroy(contactEditor);
38 }
39
40 void OssoABookDialog::showContactDialog(const QString &id)
41 {
42     OssoABookContact *contact = OssoABookDialog::lookup(id);
43     if (contact) {
44     //GtkWidget *contactDialog = osso_abook_touch_contact_starter_new_with_contact(NULL, contact);
45     GtkWidget *contactDialog = osso_abook_touch_contact_starter_dialog_new(NULL,
46         (OssoABookTouchContactStarter*)osso_abook_touch_contact_starter_new_with_contact(NULL,
47         contact));
48
49     gtk_widget_show_all(contactDialog);
50     gtk_dialog_run(GTK_DIALOG(contactDialog));
51     gtk_widget_destroy(contactDialog);
52     }
53 }
54
55 OssoABookContact* OssoABookDialog::lookup(const QString& id){
56   GList* l = NULL; // Do not free
57   GError *error = NULL;
58   OssoABookAggregator* aggregator = NULL; // Do not free
59
60   aggregator = (OssoABookAggregator*) osso_abook_aggregator_get_default(&error);
61   if (error){
62     qWarning() << "error opening addressbook" << error->message;
63     g_error_free (error);
64     return NULL;
65   }
66
67   l = osso_abook_aggregator_lookup(aggregator,qPrintable(id));
68
69   return (OssoABookContact*) l->data;
70 }