aboutsummaryrefslogtreecommitdiffstats
path: root/doc/examples
diff options
context:
space:
mode:
authorKavindra Devi Palaraja <kavindra.palaraja@nokia.com>2009-07-10 16:13:02 +0200
committerKavindra Devi Palaraja <kavindra.palaraja@nokia.com>2009-07-10 16:13:20 +0200
commit59ebd3739d6b1f298dc6bf887cb5883e258ace4c (patch)
treefe7380815aa23853bb12bd8af4070e66708c3c6a /doc/examples
parent00025f93dc08fed9d3668de48d6deb15fd4056eb (diff)
Doc - Starting on Part 7
Reviewed-By: TrustMe
Diffstat (limited to 'doc/examples')
-rw-r--r--doc/examples/addressbook-sdk/part7/addressbook.cpp316
-rw-r--r--doc/examples/addressbook-sdk/part7/addressbook.h38
-rw-r--r--doc/examples/addressbook-sdk/part7/addressbook.ui136
-rw-r--r--doc/examples/addressbook-sdk/part7/part7.pro22
4 files changed, 494 insertions, 18 deletions
diff --git a/doc/examples/addressbook-sdk/part7/addressbook.cpp b/doc/examples/addressbook-sdk/part7/addressbook.cpp
index de35f5ac738..63d52a65a95 100644
--- a/doc/examples/addressbook-sdk/part7/addressbook.cpp
+++ b/doc/examples/addressbook-sdk/part7/addressbook.cpp
@@ -5,9 +5,325 @@ AddressBook::AddressBook(QWidget *parent)
: QWidget(parent), ui(new Ui::AddressBook)
{
ui->setupUi(this);
+
+ nameLine = new QLineEdit;
+ nameLine = ui->nameLine;
+ nameLine->setReadOnly(true);
+
+ addressText = new QTextEdit;
+ addressText = ui->addressText;
+ addressText->setReadOnly(true);
+
+ addButton = new QPushButton;
+ addButton = ui->addButton;
+
+ submitButton = new QPushButton;
+ submitButton = ui->submitButton;
+ submitButton->hide();
+
+ cancelButton = new QPushButton;
+ cancelButton = ui->cancelButton;
+ cancelButton->hide();
+
+ nextButton = new QPushButton;
+ nextButton = ui->nextButton;
+ nextButton->setEnabled(false);
+
+ previousButton = new QPushButton;
+ previousButton = ui->previousButton;
+ previousButton->setEnabled(false);
+
+ editButton = new QPushButton;
+ editButton = ui->editButton;
+ editButton->setEnabled(false);
+
+ removeButton = new QPushButton;
+ removeButton = ui->removeButton;
+ removeButton->setEnabled(false);
+
+ findButton = new QPushButton;
+ findButton = ui->findButton;
+
+ dialog = new FindDialog;
+
+ loadButton = new QPushButton;
+ loadButton = ui->loadButton;
+
+ saveButton = new QPushButton;
+ saveButton = ui->saveButton;
+
+ connect(addButton, SIGNAL(clicked()), this,
+ SLOT(addContact()));
+ connect(submitButton, SIGNAL(clicked()), this,
+ SLOT(submitContact()));
+ connect(cancelButton, SIGNAL(clicked()), this,
+ SLOT(cancel()));
+ connect(nextButton, SIGNAL(clicked()), this,
+ SLOT(next()));
+ connect(previousButton, SIGNAL(clicked()), this,
+ SLOT(previous()));
+ connect(editButton, SIGNAL(clicked()), this,
+ SLOT(editContact()));
+ connect(removeButton, SIGNAL(clicked()), this,
+ SLOT(removeContact()));
+ connect(findButton, SIGNAL(clicked()), this,
+ SLOT(findContact()));
+
+ setWindowTitle(tr("Simple Address Book"));
}
AddressBook::~AddressBook()
{
delete ui;
}
+
+void AddressBook::addContact()
+{
+ oldName = nameLine->text();
+ oldAddress = addressText->toPlainText();
+
+ nameLine->clear();
+ addressText->clear();
+
+ updateInterface(AddingMode);
+}
+
+void AddressBook::submitContact()
+{
+ QString name = nameLine->text();
+ QString address = addressText->toPlainText();
+
+ if (name == "" || address == "") {
+ QMessageBox::information(this, tr("Empty Field"),
+ tr("Please enter a name and address."));
+ }
+
+ if (currentMode == AddingMode) {
+
+ if (!contacts.contains(name)) {
+ contacts.insert(name, address);
+ QMessageBox::information(this, tr("Add Successful"),
+ tr("\"%1\" has been added to your address book.").arg(name));
+ } else {
+ QMessageBox::information(this, tr("Add Unsuccessful"),
+ tr("Sorry, \"%1\" is already in your address book.").arg(name));
+ }
+
+ } else if (currentMode == EditingMode) {
+
+ if (oldName != name) {
+ if (!contacts.contains(name)) {
+ QMessageBox::information(this, tr("Edit Successful"),
+ tr("\"%1\" has been edited in your address book.").arg(oldName));
+ contacts.remove(oldName);
+ contacts.insert(name, address);
+ } else {
+ QMessageBox::information(this, tr("Edit Unsuccessful"),
+ tr("Sorry, \"%1\" is already in your address book.").arg(name));
+ }
+ } else if (oldAddress != address) {
+ QMessageBox::information(this, tr("Edit Successful"),
+ tr("\"%1\" has been edited in your address book.").arg(name));
+ contacts[name] = address;
+ }
+ }
+ updateInterface(NavigationMode);
+}
+
+void AddressBook::cancel()
+{
+ nameLine->setText(oldName);
+ nameLine->setReadOnly(true);
+
+ updateInterface(NavigationMode);
+}
+
+void AddressBook::next()
+{
+ QString name = nameLine->text();
+ QMap<QString, QString>::iterator i = contacts.find(name);
+
+ if (i != contacts.end())
+ i++;
+ if (i == contacts.end())
+ i = contacts.begin();
+
+ nameLine->setText(i.key());
+ addressText->setText(i.value());
+}
+
+void AddressBook::previous()
+{
+ QString name = nameLine->text();
+ QMap<QString, QString>::iterator i = contacts.find(name);
+
+ if (i == contacts.end()) {
+ nameLine->clear();
+ addressText->clear();
+ return;
+ }
+
+ if (i == contacts.begin())
+ i = contacts.end();
+
+ i--;
+ nameLine->setText(i.key());
+ addressText->setText(i.value());
+}
+
+void AddressBook::editContact()
+{
+ oldName = nameLine->text();
+ oldAddress = addressText->toPlainText();
+
+ updateInterface(EditingMode);
+}
+
+void AddressBook::removeContact()
+{
+ QString name = nameLine->text();
+ QString address = addressText->toPlainText();
+
+ if (contacts.contains(name)) {
+ int button = QMessageBox::question(this,
+ tr("Confirm Remove"),
+ tr("Are you sure you want to remove \"%1\"?").arg(name),
+ QMessageBox::Yes | QMessageBox::No);
+
+ if (button == QMessageBox::Yes) {
+ previous();
+ contacts.remove(name);
+
+ QMessageBox::information(this, tr("Remove Successful"),
+ tr("\"%1\" has been removed from your address book.").arg(name));
+ }
+ }
+
+ updateInterface(NavigationMode);
+}
+
+void AddressBook::updateInterface(Mode mode)
+{
+ currentMode = mode;
+
+ switch (currentMode) {
+
+ case AddingMode:
+ case EditingMode:
+
+ nameLine->setReadOnly(false);
+ nameLine->setFocus(Qt::OtherFocusReason);
+ addressText->setReadOnly(false);
+
+ addButton->setEnabled(false);
+ editButton->setEnabled(false);
+ removeButton->setEnabled(false);
+
+ nextButton->setEnabled(false);
+ previousButton->setEnabled(false);
+
+ submitButton->show();
+ cancelButton->show();
+ break;
+
+ case NavigationMode:
+
+ if (contacts.isEmpty()) {
+ nameLine->clear();
+ addressText->clear();
+ }
+
+ nameLine->setReadOnly(true);
+ addressText->setReadOnly(true);
+ addButton->setEnabled(true);
+
+ int number = contacts.size();
+ editButton->setEnabled(number >= 1);
+ removeButton->setEnabled(number >= 1);
+ findButton->setEnabled(number > 2);
+ nextButton->setEnabled(number > 1);
+ previousButton->setEnabled(number >1);
+
+ submitButton->hide();
+ cancelButton->hide();
+ break;
+ }
+}
+
+void AddressBook::findContact()
+{
+ dialog->show();
+
+ if (dialog->exec() == QDialog::Accepted) {
+ QString contactName = dialog->getFindText();
+
+ if (contacts.contains(contactName)) {
+ nameLine->setText(contactName);
+ addressText->setText(contacts.value(contactName));
+ } else {
+ QMessageBox::information(this, tr("Contact Not Found"),
+ tr("Sorry, \"%1\" is not in your address book.").arg(contactName));
+ return;
+ }
+ }
+
+ updateInterface(NavigationMode);
+}
+
+void AddressBook::saveToFile()
+{
+ QString fileName = QFileDialog::getSaveFileName(this,
+ tr("Save Address Book"), "",
+ tr("Address book (*.abk);; AllFiles (*)"));
+
+ if (fileName.isEmpty())
+ return;
+ else {
+ QFile file(fileName);
+
+ if (!file.open(QIODevice::WriteOnly)) {
+ QMessageBox::information(this, tr("Unable to open file"),
+ file.errorString());
+ return;
+ }
+
+ QDataStream out(&file);
+ out.setVersion(QDataStream::Qt_4_5);
+ out << contacts;
+ }
+}
+
+void AddressBook::loadFromFile()
+{
+ QString fileName = QFileDialog::getOpenFileName(this,
+ tr("Open Address Book"), "",
+ tr("Address Book(*.abk);; All Files(*)"));
+
+ if (fileName.isEmpty())
+ return;
+ else {
+ QFile file(fileName);
+
+ if (!file.open(QIODevice::ReadOnly)) {
+ QMessageBox::information(this, tr("Unable to open file"),
+ file.errorString());
+ return;
+ }
+
+ QDataStream in(&file);
+ in.setVersion(QDataStream::Qt_4_5);
+ contacts.empty(); // empty existing contacts
+ in >> contacts;
+
+ if (contacts.isEmpty()) {
+ QMessagebox::information(this, tr("No contacts in file"),
+ tr("The file you are attempting to open contains no contacts."));
+ } else {
+ QMap<QString, QString>::iterator i = contacts.begin();
+ nameLine->setText(i.key());
+ addressText->setText(i.value());
+ }
+ }
+
+ updateInterface(NavigationMode);
+}
diff --git a/doc/examples/addressbook-sdk/part7/addressbook.h b/doc/examples/addressbook-sdk/part7/addressbook.h
index b85a0acddbf..0e4048a63d7 100644
--- a/doc/examples/addressbook-sdk/part7/addressbook.h
+++ b/doc/examples/addressbook-sdk/part7/addressbook.h
@@ -2,6 +2,11 @@
#define ADDRESSBOOK_H
#include <QtGui/QWidget>
+#include <QtGui/QPushButton>
+#include <QtGui/QLineEdit>
+#include <QtGui/QTextEdit>
+#include <QtGui/QMessageBox>
+#include "finddialog.h"
namespace Ui
{
@@ -14,10 +19,43 @@ class AddressBook : public QWidget
public:
AddressBook(QWidget *parent = 0);
+ enum Mode { NavigationMode, AddingMode, EditingMode };
~AddressBook();
+public slots:
+ void addContact();
+ void submitContact();
+ void cancel();
+ void editContact();
+ void removeContact();
+ void next();
+ void previous();
+ void findContact();
+ void saveToFile();
+ void loadFromFile();
+
private:
Ui::AddressBook *ui;
+
+ void updateInterface(Mode mode);
+ QPushButton *addButton;
+ QPushButton *submitButton;
+ QPushButton *cancelButton;
+ QPushButton *editButton;
+ QPushButton *removeButton;
+ QPushButton *nextButton;
+ QPushButton *previousButton;
+ QPushButton *findButton;
+ QPushButton *loadButton;
+ QPushButton *saveButton;
+ QLineEdit *nameLine;
+ QTextEdit *addressText;
+
+ QMap<QString, QString> contacts;
+ QString oldName;
+ QString oldAddress;
+ Mode currentMode;
+ FindDialog *dialog;
};
#endif // ADDRESSBOOK_H
diff --git a/doc/examples/addressbook-sdk/part7/addressbook.ui b/doc/examples/addressbook-sdk/part7/addressbook.ui
index 7b771cc37b5..f46c9c39697 100644
--- a/doc/examples/addressbook-sdk/part7/addressbook.ui
+++ b/doc/examples/addressbook-sdk/part7/addressbook.ui
@@ -1,7 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AddressBook</class>
- <widget class="QWidget" name="AddressBook" >
- <property name="geometry" >
+ <widget class="QWidget" name="AddressBook">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
@@ -9,12 +10,137 @@
<height>400</height>
</rect>
</property>
- <property name="windowTitle" >
+ <property name="windowTitle">
<string>AddressBook</string>
</property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="nameLabel">
+ <property name="text">
+ <string>Name:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="nameLine"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="addressLabel">
+ <property name="text">
+ <string>Address:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QTextEdit" name="addressText"/>
+ </item>
+ <item row="1" column="2">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QPushButton" name="addButton">
+ <property name="text">
+ <string>Add</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="submitButton">
+ <property name="text">
+ <string>Submit</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="cancelButton">
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="editButton">
+ <property name="text">
+ <string>Edit</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="removeButton">
+ <property name="text">
+ <string>Remove</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="findButton">
+ <property name="text">
+ <string>Find</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="loadButton">
+ <property name="toolTip">
+ <string>Load contacts from a file</string>
+ </property>
+ <property name="text">
+ <string>Load...</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="saveButton">
+ <property name="toolTip">
+ <string>Save contacts to a file</string>
+ </property>
+ <property name="text">
+ <string>Save...</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item row="2" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="nextButton">
+ <property name="text">
+ <string>Previous</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="previousButton">
+ <property name="text">
+ <string>Next</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
</widget>
- <layoutDefault spacing="6" margin="11" />
- <pixmapfunction></pixmapfunction>
+ <layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
diff --git a/doc/examples/addressbook-sdk/part7/part7.pro b/doc/examples/addressbook-sdk/part7/part7.pro
index 9fc49631621..efdbe0bb6e3 100644
--- a/doc/examples/addressbook-sdk/part7/part7.pro
+++ b/doc/examples/addressbook-sdk/part7/part7.pro
@@ -1,16 +1,12 @@
-#-------------------------------------------------
-#
+# -------------------------------------------------
# Project created by QtCreator 2009-07-07T17:10:19
-#
-#-------------------------------------------------
-
+# -------------------------------------------------
TARGET = part7
TEMPLATE = app
-
-
-SOURCES += main.cpp\
- addressbook.cpp
-
-HEADERS += addressbook.h
-
-FORMS += addressbook.ui
+SOURCES += main.cpp \
+ addressbook.cpp \
+ finddialog.cpp
+HEADERS += addressbook.h \
+ finddialog.h
+FORMS += addressbook.ui \
+ finddialog.ui