diff options
author | Christian Kamm <christian.d.kamm@nokia.com> | 2010-11-15 11:50:57 +0100 |
---|---|---|
committer | Christian Kamm <christian.d.kamm@nokia.com> | 2010-11-15 11:50:57 +0100 |
commit | 379d054fd0642e587291b60b26dbe2f9b55281bd (patch) | |
tree | 50de63f7570a00883bf99bbec4a6a4581339a405 | |
parent | d7142f0182e24045806903778d89facafa38e164 (diff) |
Add Contacts data export, change layout of buttons.
Reviewed-by: owolff
-rw-r--r-- | src/mobility/contacts.cpp | 23 | ||||
-rw-r--r-- | src/mobility/contacts.h | 1 | ||||
-rw-r--r-- | src/ui/contactsui.cpp | 25 | ||||
-rw-r--r-- | src/ui/contactsui.h | 1 | ||||
-rw-r--r-- | src/ui/organizerui.cpp | 16 |
5 files changed, 54 insertions, 12 deletions
diff --git a/src/mobility/contacts.cpp b/src/mobility/contacts.cpp index fd5933c..b75a3e9 100644 --- a/src/mobility/contacts.cpp +++ b/src/mobility/contacts.cpp @@ -36,6 +36,8 @@ #include <contacts/details/qcontactphonenumber.h> #include <contacts/engines/qcontactmemorybackend_p.h> #include <versit/qversitreader.h> +#include <versit/qversitwriter.h> +#include <versit/qversitcontactexporter.h> #include <versit/qversitcontactimporter.h> #include <QtCore/QMap> @@ -106,3 +108,24 @@ bool Contacts::importFromVCardFile(const QString &fileName) return true; } + +bool Contacts::exportToVCardFile(const QString &fileName) +{ + QFile contactsFile(fileName); + contactsFile.open(QIODevice::WriteOnly); + if (!contactsFile.isWritable()) + return false; + + QVersitContactExporter exporter; + if (!exporter.exportContacts(mManager->contacts())) { + qWarning() << "Could not export contacts"; + return false; + } + + QVersitWriter writer(&contactsFile); + if (!writer.startWriting(exporter.documents())) + return false; + writer.waitForFinished(); + + return true; +} diff --git a/src/mobility/contacts.h b/src/mobility/contacts.h index 3997ae7..ffa6671 100644 --- a/src/mobility/contacts.h +++ b/src/mobility/contacts.h @@ -57,6 +57,7 @@ public slots: void setInitialData(); void publish() const; bool importFromVCardFile(const QString &fileName); + bool exportToVCardFile(const QString &fileName); signals: // for incremental changes triggered remotely diff --git a/src/ui/contactsui.cpp b/src/ui/contactsui.cpp index e111dbc..1354a85 100644 --- a/src/ui/contactsui.cpp +++ b/src/ui/contactsui.cpp @@ -43,13 +43,13 @@ #include <QtGui/QTableWidget> #include <QtGui/QFileDialog> #include <QtGui/QMessageBox> +#include <QtGui/QHBoxLayout> ContactsUi::ContactsUi(Contacts *contacts, QWidget *parent) : ToolBoxPage(parent) , mContacts(contacts) , mContactList(0) { - QStringList tags; QList<OptionsItem *> optionsList; mContactList = new QTableWidget(); @@ -58,13 +58,18 @@ ContactsUi::ContactsUi(Contacts *contacts, QWidget *parent) mContactList->setHorizontalHeaderLabels(QStringList(tr("Name"))); mContactList->horizontalHeaderItem(0)->setTextAlignment(Qt::AlignLeft); OptionsItem *item = new OptionsItem("", mContactList, true); - item->setTags(tags); optionsList << item; + QWidget *exportImportButtons = new QWidget; + QHBoxLayout *layout = new QHBoxLayout; + QPushButton *contactsExportButton = new QPushButton(tr("Export")); + connect(contactsExportButton, SIGNAL(clicked()), this, SLOT(exportContacts())); + layout->addWidget(contactsExportButton); QPushButton *contactsImportButton = new QPushButton(tr("Import")); connect(contactsImportButton, SIGNAL(clicked()), this, SLOT(importContacts())); - item = new OptionsItem("", contactsImportButton, true); - item->setTags(tags); + layout->addWidget(contactsImportButton); + exportImportButtons->setLayout(layout); + item = new OptionsItem("", exportImportButtons, true); optionsList << item; connect(mContacts, SIGNAL(contactsAdded(QList<QContactLocalId>)), this, SLOT(updateContactList())); @@ -90,6 +95,18 @@ void ContactsUi::importContacts() updateContactList(); } +void ContactsUi::exportContacts() +{ + QString exportFile = QFileDialog::getOpenFileName(0, tr("Select vCard File to Export to"), ".", "*.vcf"); + if (exportFile.isNull()) + return; + + if (!mContacts->exportToVCardFile(exportFile)) { + QMessageBox::information(0, tr("Export Failed"), + tr("Sorry, unable to export to \"%1\".").arg(exportFile)); + } +} + void ContactsUi::updateContactList() { QList<QContactLocalId> contactIds = mContacts->manager()->contactIds(); mContactList->setRowCount(contactIds.size()); diff --git a/src/ui/contactsui.h b/src/ui/contactsui.h index 6d756dc..1576037 100644 --- a/src/ui/contactsui.h +++ b/src/ui/contactsui.h @@ -46,6 +46,7 @@ public: private slots: void importContacts(); + void exportContacts(); void updateContactList(); private: diff --git a/src/ui/organizerui.cpp b/src/ui/organizerui.cpp index e9a5622..497a2ba 100644 --- a/src/ui/organizerui.cpp +++ b/src/ui/organizerui.cpp @@ -38,6 +38,7 @@ #include <QtGui/QFileDialog> #include <QtGui/QMessageBox> #include <QtGui/QTreeView> +#include <QtGui/QHBoxLayout> #include <QDebug> @@ -45,25 +46,24 @@ OrganizerUi::OrganizerUi(Organizer *organizer, QWidget *parent) : ToolBoxPage(parent) , m_organizer(organizer) { - QStringList tags; QList<OptionsItem *> optionsList; QTreeView *organizerTreeView = new QTreeView(); organizerTreeView->setModel(m_organizer->organizerModel()); + organizerTreeView->setHeaderHidden(true); OptionsItem *item = new OptionsItem("", organizerTreeView, true); - item->setTags(tags); optionsList << item; + QWidget *exportImportButtons = new QWidget; + QHBoxLayout *layout = new QHBoxLayout; QPushButton *organizerExportButton = new QPushButton(tr("Export")); connect(organizerExportButton, SIGNAL(clicked()), this, SLOT(exportOrganizer())); - item = new OptionsItem("", organizerExportButton, true); - item->setTags(tags); - optionsList << item; - + layout->addWidget(organizerExportButton); QPushButton *organizerImportButton = new QPushButton(tr("Import")); connect(organizerImportButton, SIGNAL(clicked()), this, SLOT(importOrganizer())); - item = new OptionsItem("", organizerImportButton, true); - item->setTags(tags); + layout->addWidget(organizerImportButton); + exportImportButtons->setLayout(layout); + item = new OptionsItem("", exportImportButtons, true); optionsList << item; setTitle(tr("Organizer")); |