summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2010-11-15 11:50:57 +0100
committerChristian Kamm <christian.d.kamm@nokia.com>2010-11-15 11:50:57 +0100
commit379d054fd0642e587291b60b26dbe2f9b55281bd (patch)
tree50de63f7570a00883bf99bbec4a6a4581339a405
parentd7142f0182e24045806903778d89facafa38e164 (diff)
Add Contacts data export, change layout of buttons.
Reviewed-by: owolff
-rw-r--r--src/mobility/contacts.cpp23
-rw-r--r--src/mobility/contacts.h1
-rw-r--r--src/ui/contactsui.cpp25
-rw-r--r--src/ui/contactsui.h1
-rw-r--r--src/ui/organizerui.cpp16
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"));