Merge remote-tracking branch 'origin/3.1'
Conflicts: qtcreator.pri qtcreator.qbs src/plugins/qtsupport/qtversionmanager.cpp src/shared/qbs Change-Id: If7a93fb018799fe6ada76e79c24ab5b43dfa6fc2
1
dist/changes-3.1.0
vendored
@@ -99,6 +99,7 @@ Version Control Systems
|
|||||||
* Added completion in change selection dialog
|
* Added completion in change selection dialog
|
||||||
* Fixed freeze after resolving conflict with cherry-pick or revert
|
* Fixed freeze after resolving conflict with cherry-pick or revert
|
||||||
* Added support for local branch selection in the Push to Gerrit dialog
|
* Added support for local branch selection in the Push to Gerrit dialog
|
||||||
|
* Removed branch list from "Git Show" header (QTCREATORBUG-11293)
|
||||||
* ClearCase
|
* ClearCase
|
||||||
* Improved performance of indexing dynamic views
|
* Improved performance of indexing dynamic views
|
||||||
* Added warning when editing Derived Objects
|
* Added warning when editing Derived Objects
|
||||||
|
@@ -9,9 +9,7 @@
|
|||||||
<url>http://www.mycompany.com</url>
|
<url>http://www.mycompany.com</url>
|
||||||
//! [2]
|
//! [2]
|
||||||
//! [3]
|
//! [3]
|
||||||
<dependencyList>
|
$$dependencyList
|
||||||
<dependency name=\"Core\" version=\"$$QTCREATOR_VERSION\"/>
|
|
||||||
</dependencyList>
|
|
||||||
//! [3]
|
//! [3]
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
|
@@ -1,7 +1,4 @@
|
|||||||
#! [1]
|
#! [1]
|
||||||
TARGET = Example
|
|
||||||
TEMPLATE = lib
|
|
||||||
|
|
||||||
DEFINES += EXAMPLE_LIBRARY
|
DEFINES += EXAMPLE_LIBRARY
|
||||||
#! [1]
|
#! [1]
|
||||||
|
|
||||||
@@ -42,9 +39,25 @@ PROVIDER = MyCompany
|
|||||||
#![5]
|
#![5]
|
||||||
|
|
||||||
#! [6]
|
#! [6]
|
||||||
include($$QTCREATOR_SOURCES/src/qtcreatorplugin.pri)
|
###### If the plugin can be depended upon by other plugins, this code needs to be outsourced to
|
||||||
include($$QTCREATOR_SOURCES/src/plugins/coreplugin/coreplugin.pri)
|
###### <dirname>_dependencies.pri, where <dirname> is the name of the directory containing the
|
||||||
|
###### plugin's sources.
|
||||||
|
|
||||||
LIBS += -L$$IDE_PLUGIN_PATH/QtProject
|
QTC_PLUGIN_NAME = Example
|
||||||
|
QTC_LIB_DEPENDS += \
|
||||||
|
# nothing here at this time
|
||||||
|
|
||||||
|
QTC_PLUGIN_DEPENDS += \
|
||||||
|
coreplugin
|
||||||
|
|
||||||
|
QTC_PLUGIN_RECOMMENDS += \
|
||||||
|
# optional plugin dependencies. nothing here at this time
|
||||||
|
|
||||||
|
###### End _dependencies.pri contents ######
|
||||||
#! [6]
|
#! [6]
|
||||||
|
|
||||||
|
#![7]
|
||||||
|
include($$QTCREATOR_SOURCES/src/qtcreatorplugin.pri)
|
||||||
|
|
||||||
|
#![7]
|
||||||
|
|
||||||
|
@@ -75,7 +75,7 @@ ExtensionSystem::IPlugin::ShutdownFlag ExamplePlugin::aboutToShutdown()
|
|||||||
//! [slot implementation]
|
//! [slot implementation]
|
||||||
void ExamplePlugin::triggerAction()
|
void ExamplePlugin::triggerAction()
|
||||||
{
|
{
|
||||||
QMessageBox::information(Core::ICore::instance()->mainWindow(),
|
QMessageBox::information(Core::ICore::mainWindow(),
|
||||||
tr("Action triggered"),
|
tr("Action triggered"),
|
||||||
tr("This is an action from Example."));
|
tr("This is an action from Example."));
|
||||||
}
|
}
|
||||||
|
@@ -14,6 +14,7 @@ namespace Internal {
|
|||||||
class ExamplePlugin : public ExtensionSystem::IPlugin
|
class ExamplePlugin : public ExtensionSystem::IPlugin
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Example.json")
|
||||||
//! [base class]
|
//! [base class]
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@@ -170,11 +170,8 @@
|
|||||||
|
|
||||||
\snippet exampleplugin/example.pro 1
|
\snippet exampleplugin/example.pro 1
|
||||||
|
|
||||||
The first section of the .pro file defines the very basic properties of your project,
|
The first section of the .pro file lets the compiler pass an \c EXAMPLE_LIBRARY define to the
|
||||||
the name (\c{TARGET}), and that a library should be generated,
|
compiled code, which is used in the \c{example_global.h} header, but is not really of interest
|
||||||
since plugins are actually libraries that are dynamically loaded (\c{TEMPLATE = lib}).
|
|
||||||
The section also lets the compiler pass an \c EXAMPLE_LIBRARY define to the compiled
|
|
||||||
code, which is used in the \c{example_global.h} header, but is not really of interest
|
|
||||||
for now. You should not need to change that section of the .pro file.
|
for now. You should not need to change that section of the .pro file.
|
||||||
|
|
||||||
\snippet exampleplugin/example.pro 2
|
\snippet exampleplugin/example.pro 2
|
||||||
@@ -213,14 +210,20 @@
|
|||||||
|
|
||||||
\snippet exampleplugin/example.pro 6
|
\snippet exampleplugin/example.pro 6
|
||||||
|
|
||||||
This section includes the necessary parts from the \QC sources and makes your
|
This section defines the name and dependencies of your plugin.
|
||||||
plugin find the \QC libraries and plugins. The included file
|
The \c{QTC_PLUGIN_NAME} variable defines the name of your plugin, and the name of the
|
||||||
\c{qtcreatorplugin.pri} makes sure that you build a plugin that is suitable
|
dynamic library that is created for it. The \c{QTC_LIB_DEPENDS} variable is a list of
|
||||||
for use in \QC. The file \c{plugins/coreplugin/coreplugin.pri} makes your
|
library names of the \QC utility libraries that your plugin depends on.
|
||||||
plugin dependent on the Core plugin and makes sure that you can access its
|
Typical values would be \c{aggregation}, \c{extensionsystem} and \c{utils}.
|
||||||
public API.
|
The \c{QTC_PLUGIN_DEPENDS} variable defines the \QC plugins that your plugin depends on.
|
||||||
If you want to use or extend functionality from other plugins, you
|
Almost all \QC plugins will depend on the \c{coreplugin}. The \c{QTC_PLUGIN_RECOMMENDS}
|
||||||
need to add the corresponding .pri file of the plugin here.
|
variable defines the \QC plugins that your plugin optionally depends on. For more information,
|
||||||
|
see \l{Optional Dependencies}.
|
||||||
|
|
||||||
|
\snippet exampleplugin/example.pro 7
|
||||||
|
|
||||||
|
The included file \c{qtcreatorplugin.pri} makes sure that you build a plugin that is suitable
|
||||||
|
for use in \QC, by using the information you gave above.
|
||||||
|
|
||||||
For more information about qmake, and writing .pro files in general,
|
For more information about qmake, and writing .pro files in general,
|
||||||
see the \l{http://qt-project.org/doc/qt-4.8/qmake-manual.html}{qmake Manual}.
|
see the \l{http://qt-project.org/doc/qt-4.8/qmake-manual.html}{qmake Manual}.
|
||||||
@@ -252,8 +255,8 @@
|
|||||||
|
|
||||||
\snippet exampleplugin/Example.pluginspec.in 3
|
\snippet exampleplugin/Example.pluginspec.in 3
|
||||||
|
|
||||||
The last section tells the plugin manager about the dependencies of this
|
The \c{$$dependencyList} variable is automatically replaced by the dependency information
|
||||||
plugin. Most \QC plugins will at least depend on the \c{Core} plugin.
|
in \c{QTC_PLUGIN_DEPENDS} and \c{QTC_PLUGIN_RECOMMENDS} from your plugin's .pro file.
|
||||||
|
|
||||||
\section1 Plugin Class
|
\section1 Plugin Class
|
||||||
|
|
||||||
@@ -274,7 +277,7 @@
|
|||||||
\snippet exampleplugin/exampleplugin.h base class
|
\snippet exampleplugin/exampleplugin.h base class
|
||||||
|
|
||||||
All \QC plugins must be derived from \l{ExtensionSystem::IPlugin} and
|
All \QC plugins must be derived from \l{ExtensionSystem::IPlugin} and
|
||||||
are QObjects.
|
are QObjects. The \c{Q_PLUGIN_METADATA} macro is necessary to create a valid Qt plugin.
|
||||||
|
|
||||||
\snippet exampleplugin/exampleplugin.h plugin functions
|
\snippet exampleplugin/exampleplugin.h plugin functions
|
||||||
|
|
||||||
|
@@ -1,29 +1,42 @@
|
|||||||
/****************************************************************************
|
/**************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (c) 2014 Digia Plc and/or its subsidiary(-ies).
|
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||||
** Contact: http://www.qt-project.org/legal
|
** Contact: http://www.qt-project.org/legal
|
||||||
**
|
**
|
||||||
** This file is part of Qt Creator
|
** This file is part of Qt Creator
|
||||||
**
|
**
|
||||||
|
** You may use this file under the terms of the BSD license as follows:
|
||||||
**
|
**
|
||||||
** GNU Free Documentation License
|
** "Redistribution and use in source and binary forms, with or without
|
||||||
|
** modification, are permitted provided that the following conditions are
|
||||||
|
** met:
|
||||||
|
** * Redistributions of source code must retain the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer.
|
||||||
|
** * Redistributions in binary form must reproduce the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer in
|
||||||
|
** the documentation and/or other materials provided with the
|
||||||
|
** distribution.
|
||||||
|
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
||||||
|
** the names of its contributors may be used to endorse or promote
|
||||||
|
** products derived from this software without specific prior written
|
||||||
|
** permission.
|
||||||
**
|
**
|
||||||
** Alternatively, this file may be used under the terms of the GNU Free
|
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
** Documentation License version 1.3 as published by the Free Software
|
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
** Foundation and appearing in the file included in the packaging of this
|
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
** file.
|
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||||
**
|
**
|
||||||
**
|
**************************************************************************/
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
// **********************************************************************
|
import QtQuick 2.2
|
||||||
// NOTE: the sections are not ordered by their logical order to avoid
|
import QtQuick.Controls 1.1
|
||||||
// reshuffling the file each time the index order changes (i.e., often).
|
|
||||||
// Run the fixnavi.pl script to adjust the links to the index order.
|
|
||||||
// **********************************************************************
|
|
||||||
|
|
||||||
import QtQuick 2.1
|
|
||||||
import QtQuick.Controls 1.0
|
|
||||||
|
|
||||||
import QtSensors 5.0
|
import QtSensors 5.0
|
||||||
|
|
||||||
@@ -34,6 +47,29 @@ ApplicationWindow {
|
|||||||
height: 480
|
height: 480
|
||||||
visible: true
|
visible: true
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: bubble
|
||||||
|
source: "Bluebubble.svg"
|
||||||
|
smooth: true
|
||||||
|
property real centerX: mainWindow.width / 2
|
||||||
|
property real centerY: mainWindow.height / 2
|
||||||
|
property real bubbleCenter: bubble.width / 2
|
||||||
|
x: centerX - bubbleCenter
|
||||||
|
y: centerY - bubbleCenter
|
||||||
|
|
||||||
|
Behavior on y {
|
||||||
|
SmoothedAnimation {
|
||||||
|
easing.type: Easing.Linear
|
||||||
|
duration: 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Behavior on x {
|
||||||
|
SmoothedAnimation {
|
||||||
|
easing.type: Easing.Linear
|
||||||
|
duration: 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Accelerometer {
|
Accelerometer {
|
||||||
id: accel
|
id: accel
|
||||||
dataRate: 100
|
dataRate: 100
|
||||||
@@ -67,30 +103,7 @@ ApplicationWindow {
|
|||||||
return -(Math.atan(x / Math.sqrt(y * y + z * z)) * 57.2957795);
|
return -(Math.atan(x / Math.sqrt(y * y + z * z)) * 57.2957795);
|
||||||
}
|
}
|
||||||
|
|
||||||
Image {
|
menuBar: MenuBar {
|
||||||
id: bubble
|
|
||||||
source: "Bluebubble.svg"
|
|
||||||
smooth: true
|
|
||||||
property real centerX: mainWindow.width / 2
|
|
||||||
property real centerY: mainWindow.height / 2
|
|
||||||
property real bubbleCenter: bubble.width / 2
|
|
||||||
x: centerX - bubbleCenter
|
|
||||||
y: centerY - bubbleCenter
|
|
||||||
|
|
||||||
Behavior on y {
|
|
||||||
SmoothedAnimation {
|
|
||||||
easing.type: Easing.Linear
|
|
||||||
duration: 100
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Behavior on x {
|
|
||||||
SmoothedAnimation {
|
|
||||||
easing.type: Easing.Linear
|
|
||||||
duration: 100
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuBar {
|
|
||||||
Menu {
|
Menu {
|
||||||
title: qsTr("File")
|
title: qsTr("File")
|
||||||
MenuItem {
|
MenuItem {
|
||||||
@@ -100,4 +113,3 @@ ApplicationWindow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@@ -1,52 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
//! [class implementation]
|
|
||||||
#include "addressbook.h"
|
|
||||||
#include "ui_addressbook.h"
|
|
||||||
|
|
||||||
AddressBook::AddressBook(QWidget *parent)
|
|
||||||
: QWidget(parent), ui(new Ui::AddressBookClass)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
AddressBook::~AddressBook()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
//! [class implementation]
|
|
@@ -1,62 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
//! [class definition]
|
|
||||||
#ifndef ADDRESSBOOK_H
|
|
||||||
#define ADDRESSBOOK_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
|
|
||||||
namespace Ui
|
|
||||||
{
|
|
||||||
class AddressBookClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AddressBook : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
AddressBook(QWidget *parent = 0);
|
|
||||||
~AddressBook();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AddressBookClass *ui;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ADDRESSBOOK_H
|
|
||||||
//! [class definition]
|
|
@@ -1,49 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AddressBookClass</class>
|
|
||||||
<widget class="QWidget" name="AddressBookClass">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>356</width>
|
|
||||||
<height>261</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>AddressBook</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="nameEdit">
|
|
||||||
<property name="text">
|
|
||||||
<string>Name:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QLineEdit" name="lineEdit"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="addressEdit">
|
|
||||||
<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="textEdit"/>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@@ -1,49 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
//! [main function]
|
|
||||||
#include <QApplication>
|
|
||||||
#include "addressbook.h"
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
QApplication a(argc, argv);
|
|
||||||
AddressBook w;
|
|
||||||
w.show();
|
|
||||||
return a.exec();
|
|
||||||
}
|
|
||||||
//! [main function]
|
|
@@ -1,16 +0,0 @@
|
|||||||
#-------------------------------------------------
|
|
||||||
#
|
|
||||||
# Project created by QtCreator 2009-03-06T12:30:35
|
|
||||||
#
|
|
||||||
#-------------------------------------------------
|
|
||||||
|
|
||||||
TARGET = addressbook
|
|
||||||
TEMPLATE = app
|
|
||||||
|
|
||||||
|
|
||||||
SOURCES += main.cpp\
|
|
||||||
addressbook.cpp
|
|
||||||
|
|
||||||
HEADERS += addressbook.h
|
|
||||||
|
|
||||||
FORMS += addressbook.ui
|
|
@@ -1,143 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include "addressbook.h"
|
|
||||||
#include "ui_addressbook.h"
|
|
||||||
|
|
||||||
AddressBook::AddressBook(QWidget *parent)
|
|
||||||
: QWidget(parent), ui(new Ui::AddressBook)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
|
|
||||||
//! [setup fields]
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
//! [setup fields]
|
|
||||||
|
|
||||||
//! [signal slot]
|
|
||||||
connect(ui->addButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(addContact()));
|
|
||||||
connect(ui->submitButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(submitContact()));
|
|
||||||
connect(ui->cancelButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(cancel()));
|
|
||||||
//! [signal slot]
|
|
||||||
|
|
||||||
//! [window title]
|
|
||||||
setWindowTitle(tr("Simple Address Book"));
|
|
||||||
//! [window title]
|
|
||||||
}
|
|
||||||
|
|
||||||
AddressBook::~AddressBook()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! [addContact]
|
|
||||||
void AddressBook::addContact()
|
|
||||||
{
|
|
||||||
oldName = ui->nameLine->text();
|
|
||||||
oldAddress = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(false);
|
|
||||||
ui->nameLine->setFocus(Qt::OtherFocusReason);
|
|
||||||
ui->addressText->setReadOnly(false);
|
|
||||||
|
|
||||||
ui->addButton->setEnabled(false);
|
|
||||||
ui->submitButton->show();
|
|
||||||
ui->cancelButton->show();
|
|
||||||
}
|
|
||||||
//! [addContact]
|
|
||||||
|
|
||||||
//! [submitContact part1]
|
|
||||||
void AddressBook::submitContact()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
if (name.isEmpty() || address.isEmpty()) {
|
|
||||||
QMessageBox::information(this, tr("Empty Field"),
|
|
||||||
tr("Please enter a name and address."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//! [submitContact part1]
|
|
||||||
|
|
||||||
//! [submitContact part2]
|
|
||||||
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));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//! [submitContact part2]
|
|
||||||
|
|
||||||
//! [submitContact part3]
|
|
||||||
if (contacts.isEmpty()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->addButton->setEnabled(true);
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
}
|
|
||||||
//! [submitContact part3]
|
|
||||||
|
|
||||||
//! [cancel]
|
|
||||||
void AddressBook::cancel()
|
|
||||||
{
|
|
||||||
ui->nameLine->setText(oldName);
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
|
|
||||||
ui->addressText->setText(oldAddress);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
|
|
||||||
ui->addButton->setEnabled(true);
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
}
|
|
||||||
//! [cancel]
|
|
@@ -1,77 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#ifndef ADDRESSBOOK_H
|
|
||||||
#define ADDRESSBOOK_H
|
|
||||||
|
|
||||||
//! [include]
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QMap>
|
|
||||||
#include <QMessageBox>
|
|
||||||
//! [include]
|
|
||||||
|
|
||||||
namespace Ui
|
|
||||||
{
|
|
||||||
class AddressBook;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AddressBook : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
AddressBook(QWidget *parent = 0);
|
|
||||||
~AddressBook();
|
|
||||||
|
|
||||||
//! [slot definition]
|
|
||||||
public slots:
|
|
||||||
void addContact();
|
|
||||||
void submitContact();
|
|
||||||
void cancel();
|
|
||||||
//! [slot definition]
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AddressBook *ui;
|
|
||||||
|
|
||||||
//! [members]
|
|
||||||
QMap<QString, QString> contacts;
|
|
||||||
QString oldName;
|
|
||||||
QString oldAddress;
|
|
||||||
//! [members]
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ADDRESSBOOK_H
|
|
@@ -1,87 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AddressBook</class>
|
|
||||||
<widget class="QWidget" name="AddressBook">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>463</width>
|
|
||||||
<height>245</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>AddressBook</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<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>
|
|
||||||
<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>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@@ -1,49 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
//! [main function]
|
|
||||||
#include <QApplication>
|
|
||||||
#include "addressbook.h"
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
QApplication a(argc, argv);
|
|
||||||
AddressBook w;
|
|
||||||
w.show();
|
|
||||||
return a.exec();
|
|
||||||
}
|
|
||||||
//! [main function]
|
|
@@ -1,16 +0,0 @@
|
|||||||
#-------------------------------------------------
|
|
||||||
#
|
|
||||||
# Project created by QtCreator 2009-03-06T12:30:35
|
|
||||||
#
|
|
||||||
#-------------------------------------------------
|
|
||||||
|
|
||||||
TARGET = addressbook
|
|
||||||
TEMPLATE = app
|
|
||||||
|
|
||||||
|
|
||||||
SOURCES += main.cpp\
|
|
||||||
addressbook.cpp
|
|
||||||
|
|
||||||
HEADERS += addressbook.h
|
|
||||||
|
|
||||||
FORMS += addressbook.ui
|
|
@@ -1,190 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include "addressbook.h"
|
|
||||||
#include "ui_addressbook.h"
|
|
||||||
|
|
||||||
AddressBook::AddressBook(QWidget *parent)
|
|
||||||
: QWidget(parent), ui(new Ui::AddressBook)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->addButton = ui->addButton;
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
|
|
||||||
//! [setup fields]
|
|
||||||
ui->nextButton->setEnabled(false);
|
|
||||||
ui->previousButton->setEnabled(false);
|
|
||||||
//! [setup fields]
|
|
||||||
|
|
||||||
connect(ui->addButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(addContact()));
|
|
||||||
connect(ui->submitButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(submitContact()));
|
|
||||||
connect(ui->cancelButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(cancel()));
|
|
||||||
//! [signal slot]
|
|
||||||
connect(ui->nextButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(next()));
|
|
||||||
connect(ui->previousButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(previous()));
|
|
||||||
//! [signal slot]
|
|
||||||
|
|
||||||
setWindowTitle(tr("Simple Address Book"));
|
|
||||||
}
|
|
||||||
|
|
||||||
AddressBook::~AddressBook()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::addContact()
|
|
||||||
{
|
|
||||||
oldName = ui->nameLine->text();
|
|
||||||
oldAddress = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(false);
|
|
||||||
ui->nameLine->setFocus(Qt::OtherFocusReason);
|
|
||||||
ui->addressText->setReadOnly(false);
|
|
||||||
|
|
||||||
ui->addButton->setEnabled(false);
|
|
||||||
//! [disable navigation]
|
|
||||||
ui->nextButton->setEnabled(false);
|
|
||||||
ui->previousButton->setEnabled(false);
|
|
||||||
//! [disable navigation]
|
|
||||||
ui->submitButton->show();
|
|
||||||
ui->cancelButton->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::submitContact()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
if (name.isEmpty() || address.isEmpty()) {
|
|
||||||
QMessageBox::information(this, tr("Empty Field"),
|
|
||||||
tr("Please enter a name and address."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
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));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (contacts.isEmpty()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->addButton->setEnabled(true);
|
|
||||||
|
|
||||||
//! [enable navigation]
|
|
||||||
int number = contacts.size();
|
|
||||||
ui->nextButton->setEnabled(number > 1);
|
|
||||||
ui->previousButton->setEnabled(number > 1);
|
|
||||||
//! [enable navigation]
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::cancel()
|
|
||||||
{
|
|
||||||
ui->nameLine->setText(oldName);
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
|
|
||||||
ui->addressText->setText(oldAddress);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->addButton->setEnabled(true);
|
|
||||||
|
|
||||||
int number = contacts.size();
|
|
||||||
ui->nextButton->setEnabled(number > 1);
|
|
||||||
ui->previousButton->setEnabled(number > 1);
|
|
||||||
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
//! [next]
|
|
||||||
void AddressBook::next()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QMap<QString, QString>::iterator i = contacts.find(name);
|
|
||||||
|
|
||||||
if (i != contacts.end())
|
|
||||||
i++;
|
|
||||||
if (i == contacts.end())
|
|
||||||
i = contacts.begin();
|
|
||||||
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
//! [next]
|
|
||||||
|
|
||||||
//! [previous]
|
|
||||||
void AddressBook::previous()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QMap<QString, QString>::iterator i = contacts.find(name);
|
|
||||||
|
|
||||||
if (i == contacts.end()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == contacts.begin())
|
|
||||||
i = contacts.end();
|
|
||||||
|
|
||||||
i--;
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
//! [previous]
|
|
@@ -1,74 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#ifndef ADDRESSBOOK_H
|
|
||||||
#define ADDRESSBOOK_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QMessageBox>
|
|
||||||
#include <QMap>
|
|
||||||
|
|
||||||
namespace Ui
|
|
||||||
{
|
|
||||||
class AddressBook;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AddressBook : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
AddressBook(QWidget *parent = 0);
|
|
||||||
~AddressBook();
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void addContact();
|
|
||||||
void submitContact();
|
|
||||||
void cancel();
|
|
||||||
//! [slot definition]
|
|
||||||
void next();
|
|
||||||
void previous();
|
|
||||||
//! [slot definition]
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AddressBook *ui;
|
|
||||||
QMap<QString, QString> contacts;
|
|
||||||
QString oldName;
|
|
||||||
QString oldAddress;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ADDRESSBOOK_H
|
|
@@ -1,105 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AddressBook</class>
|
|
||||||
<widget class="QWidget" name="AddressBook">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>498</width>
|
|
||||||
<height>333</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<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>
|
|
||||||
<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"/>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@@ -1,47 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include <QApplication>
|
|
||||||
#include "addressbook.h"
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
QApplication a(argc, argv);
|
|
||||||
AddressBook w;
|
|
||||||
w.show();
|
|
||||||
return a.exec();
|
|
||||||
}
|
|
@@ -1,16 +0,0 @@
|
|||||||
#-------------------------------------------------
|
|
||||||
#
|
|
||||||
# Project created by QtCreator 2009-06-04T13:35:14
|
|
||||||
#
|
|
||||||
#-------------------------------------------------
|
|
||||||
|
|
||||||
TARGET = part3
|
|
||||||
TEMPLATE = app
|
|
||||||
|
|
||||||
|
|
||||||
SOURCES += main.cpp\
|
|
||||||
addressbook.cpp
|
|
||||||
|
|
||||||
HEADERS += addressbook.h
|
|
||||||
|
|
||||||
FORMS += addressbook.ui
|
|
@@ -1,273 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include "addressbook.h"
|
|
||||||
#include "ui_addressbook.h"
|
|
||||||
|
|
||||||
AddressBook::AddressBook(QWidget *parent)
|
|
||||||
: QWidget(parent), ui(new Ui::AddressBook)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
ui->nextButton->setEnabled(false);
|
|
||||||
ui->previousButton->setEnabled(false);
|
|
||||||
|
|
||||||
//! [extract objects]
|
|
||||||
ui->editButton->setEnabled(false);
|
|
||||||
ui->removeButton->setEnabled(false);
|
|
||||||
//! [extract objects]
|
|
||||||
|
|
||||||
connect(ui->addButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(addContact()));
|
|
||||||
connect(ui->submitButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(submitContact()));
|
|
||||||
connect(ui->cancelButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(cancel()));
|
|
||||||
connect(ui->nextButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(next()));
|
|
||||||
connect(ui->previousButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(previous()));
|
|
||||||
//! [signal slot]
|
|
||||||
connect(ui->editButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(editContact()));
|
|
||||||
connect(ui->removeButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(removeContact()));
|
|
||||||
//! [signal slot]
|
|
||||||
|
|
||||||
setWindowTitle(tr("Simple Address Book"));
|
|
||||||
}
|
|
||||||
|
|
||||||
AddressBook::~AddressBook()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! [addContact]
|
|
||||||
void AddressBook::addContact()
|
|
||||||
{
|
|
||||||
oldName = ui->nameLine->text();
|
|
||||||
oldAddress = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
|
|
||||||
updateInterface(AddingMode);
|
|
||||||
}
|
|
||||||
//! [addContact]
|
|
||||||
|
|
||||||
//! [submitContact part1]
|
|
||||||
void AddressBook::submitContact()
|
|
||||||
{
|
|
||||||
//! [submitContact part1]
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
if (name.isEmpty() || address.isEmpty()) {
|
|
||||||
QMessageBox::information(this, tr("Empty Field"),
|
|
||||||
tr("Please enter a name and address."));
|
|
||||||
}
|
|
||||||
|
|
||||||
//! [submitContact part2]
|
|
||||||
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));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//! [submitContact part2]
|
|
||||||
|
|
||||||
//! [submitContact part3]
|
|
||||||
} 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));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} 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);
|
|
||||||
}
|
|
||||||
//! [submitContact part3]
|
|
||||||
|
|
||||||
//! [cancel]
|
|
||||||
void AddressBook::cancel()
|
|
||||||
{
|
|
||||||
ui->nameLine->setText(oldName);
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
|
|
||||||
updateInterface(NavigationMode);
|
|
||||||
}
|
|
||||||
//! [cancel]
|
|
||||||
|
|
||||||
void AddressBook::next()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QMap<QString, QString>::iterator i = contacts.find(name);
|
|
||||||
|
|
||||||
if (i != contacts.end())
|
|
||||||
i++;
|
|
||||||
if (i == contacts.end())
|
|
||||||
i = contacts.begin();
|
|
||||||
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::previous()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QMap<QString, QString>::iterator i = contacts.find(name);
|
|
||||||
|
|
||||||
if (i == contacts.end()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == contacts.begin())
|
|
||||||
i = contacts.end();
|
|
||||||
|
|
||||||
i--;
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
|
|
||||||
//! [editContact]
|
|
||||||
void AddressBook::editContact()
|
|
||||||
{
|
|
||||||
oldName = ui->nameLine->text();
|
|
||||||
oldAddress = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
updateInterface(EditingMode);
|
|
||||||
}
|
|
||||||
//! [editContact]
|
|
||||||
|
|
||||||
//! [removeContact]
|
|
||||||
void AddressBook::removeContact()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->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);
|
|
||||||
}
|
|
||||||
//! [removeContact]
|
|
||||||
|
|
||||||
//! [updateInterface part1]
|
|
||||||
void AddressBook::updateInterface(Mode mode)
|
|
||||||
{
|
|
||||||
currentMode = mode;
|
|
||||||
|
|
||||||
switch (currentMode) {
|
|
||||||
|
|
||||||
case AddingMode:
|
|
||||||
case EditingMode:
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(false);
|
|
||||||
ui->nameLine->setFocus(Qt::OtherFocusReason);
|
|
||||||
ui->addressText->setReadOnly(false);
|
|
||||||
|
|
||||||
ui->addButton->setEnabled(false);
|
|
||||||
ui->editButton->setEnabled(false);
|
|
||||||
ui->removeButton->setEnabled(false);
|
|
||||||
|
|
||||||
ui->nextButton->setEnabled(false);
|
|
||||||
ui->previousButton->setEnabled(false);
|
|
||||||
|
|
||||||
ui->submitButton->show();
|
|
||||||
ui->cancelButton->show();
|
|
||||||
break;
|
|
||||||
//! [updateInterface part1]
|
|
||||||
|
|
||||||
//! [updateInterface part2]
|
|
||||||
case NavigationMode:
|
|
||||||
|
|
||||||
if (contacts.isEmpty()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->addButton->setEnabled(true);
|
|
||||||
|
|
||||||
int number = contacts.size();
|
|
||||||
ui->editButton->setEnabled(number >= 1);
|
|
||||||
ui->removeButton->setEnabled(number >= 1);
|
|
||||||
ui->nextButton->setEnabled(number > 1);
|
|
||||||
ui->previousButton->setEnabled(number >1);
|
|
||||||
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//! [updateInterface part2]
|
|
@@ -1,87 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#ifndef ADDRESSBOOK_H
|
|
||||||
#define ADDRESSBOOK_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QMessageBox>
|
|
||||||
#include <QMap>
|
|
||||||
|
|
||||||
|
|
||||||
namespace Ui
|
|
||||||
{
|
|
||||||
class AddressBook;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AddressBook : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
AddressBook(QWidget *parent = 0);
|
|
||||||
//! [enum]
|
|
||||||
enum Mode { NavigationMode, AddingMode, EditingMode };
|
|
||||||
//! [enum]
|
|
||||||
~AddressBook();
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void addContact();
|
|
||||||
void submitContact();
|
|
||||||
void cancel();
|
|
||||||
//! [slot definition]
|
|
||||||
void editContact();
|
|
||||||
void removeContact();
|
|
||||||
//! [slot definition]
|
|
||||||
void next();
|
|
||||||
void previous();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AddressBook *ui;
|
|
||||||
//! [updateInterface]
|
|
||||||
void updateInterface(Mode mode);
|
|
||||||
//! [updateInterface]
|
|
||||||
|
|
||||||
QMap<QString, QString> contacts;
|
|
||||||
QString oldName;
|
|
||||||
QString oldAddress;
|
|
||||||
//! [current mode]
|
|
||||||
Mode currentMode;
|
|
||||||
//! [current mode]
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ADDRESSBOOK_H
|
|
@@ -1,119 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AddressBook</class>
|
|
||||||
<widget class="QWidget" name="AddressBook">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>472</width>
|
|
||||||
<height>294</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>AddressBook</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
|
||||||
<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>
|
|
||||||
<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"/>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@@ -1,47 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include <QApplication>
|
|
||||||
#include "addressbook.h"
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
QApplication a(argc, argv);
|
|
||||||
AddressBook w;
|
|
||||||
w.show();
|
|
||||||
return a.exec();
|
|
||||||
}
|
|
@@ -1,16 +0,0 @@
|
|||||||
#-------------------------------------------------
|
|
||||||
#
|
|
||||||
# Project created by QtCreator 2009-06-05T16:03:06
|
|
||||||
#
|
|
||||||
#-------------------------------------------------
|
|
||||||
|
|
||||||
TARGET = part4
|
|
||||||
TEMPLATE = app
|
|
||||||
|
|
||||||
|
|
||||||
SOURCES += main.cpp\
|
|
||||||
addressbook.cpp
|
|
||||||
|
|
||||||
HEADERS += addressbook.h
|
|
||||||
|
|
||||||
FORMS += addressbook.ui
|
|
@@ -1,279 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include "addressbook.h"
|
|
||||||
#include "ui_addressbook.h"
|
|
||||||
|
|
||||||
AddressBook::AddressBook(QWidget *parent)
|
|
||||||
: QWidget(parent), ui(new Ui::AddressBook)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
ui->nextButton->setEnabled(false);
|
|
||||||
ui->previousButton->setEnabled(false);
|
|
||||||
ui->editButton->setEnabled(false);
|
|
||||||
ui->removeButton->setEnabled(false);
|
|
||||||
|
|
||||||
connect(ui->addButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(addContact()));
|
|
||||||
connect(ui->submitButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(submitContact()));
|
|
||||||
connect(ui->cancelButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(cancel()));
|
|
||||||
connect(ui->nextButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(next()));
|
|
||||||
connect(ui->previousButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(previous()));
|
|
||||||
connect(ui->editButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(editContact()));
|
|
||||||
connect(ui->removeButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(removeContact()));
|
|
||||||
//! [signal slot]
|
|
||||||
connect(ui->findButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(findContact()));
|
|
||||||
//! [signal slot]
|
|
||||||
|
|
||||||
setWindowTitle(tr("Simple Address Book"));
|
|
||||||
}
|
|
||||||
|
|
||||||
AddressBook::~AddressBook()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::addContact()
|
|
||||||
{
|
|
||||||
oldName = ui->nameLine->text();
|
|
||||||
oldAddress = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
|
|
||||||
updateInterface(AddingMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::submitContact()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
if (name.isEmpty() || address.isEmpty()) {
|
|
||||||
QMessageBox::information(this, tr("Empty Field"),
|
|
||||||
tr("Please enter a name and address."));
|
|
||||||
updateInterface(NavigationMode);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
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()
|
|
||||||
{
|
|
||||||
ui->nameLine->setText(oldName);
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
|
|
||||||
updateInterface(NavigationMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::next()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QMap<QString, QString>::iterator i = contacts.find(name);
|
|
||||||
|
|
||||||
if (i != contacts.end())
|
|
||||||
i++;
|
|
||||||
if (i == contacts.end())
|
|
||||||
i = contacts.begin();
|
|
||||||
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::previous()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QMap<QString, QString>::iterator i = contacts.find(name);
|
|
||||||
|
|
||||||
if (i == contacts.end()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == contacts.begin())
|
|
||||||
i = contacts.end();
|
|
||||||
|
|
||||||
i--;
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::editContact()
|
|
||||||
{
|
|
||||||
oldName = ui->nameLine->text();
|
|
||||||
oldAddress = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
updateInterface(EditingMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::removeContact()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->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:
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(false);
|
|
||||||
ui->nameLine->setFocus(Qt::OtherFocusReason);
|
|
||||||
ui->addressText->setReadOnly(false);
|
|
||||||
|
|
||||||
ui->addButton->setEnabled(false);
|
|
||||||
ui->editButton->setEnabled(false);
|
|
||||||
ui->removeButton->setEnabled(false);
|
|
||||||
|
|
||||||
ui->nextButton->setEnabled(false);
|
|
||||||
ui->previousButton->setEnabled(false);
|
|
||||||
|
|
||||||
ui->submitButton->show();
|
|
||||||
ui->cancelButton->show();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case NavigationMode:
|
|
||||||
|
|
||||||
if (contacts.isEmpty()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->addButton->setEnabled(true);
|
|
||||||
|
|
||||||
int number = contacts.size();
|
|
||||||
ui->editButton->setEnabled(number >= 1);
|
|
||||||
ui->removeButton->setEnabled(number >= 1);
|
|
||||||
//! [enable]
|
|
||||||
ui->findButton->setEnabled(number > 2);
|
|
||||||
//! [enable]
|
|
||||||
ui->nextButton->setEnabled(number > 1);
|
|
||||||
ui->previousButton->setEnabled(number >1);
|
|
||||||
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//! [findContact]
|
|
||||||
void AddressBook::findContact()
|
|
||||||
{
|
|
||||||
FindDialog dialog;
|
|
||||||
|
|
||||||
if (dialog.exec() == QDialog::Accepted) {
|
|
||||||
QString contactName = dialog.findText();
|
|
||||||
|
|
||||||
if (contacts.contains(contactName)) {
|
|
||||||
ui->nameLine->setText(contactName);
|
|
||||||
ui->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);
|
|
||||||
}
|
|
||||||
//! [findContact]
|
|
@@ -1,84 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#ifndef ADDRESSBOOK_H
|
|
||||||
#define ADDRESSBOOK_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QMessageBox>
|
|
||||||
#include <QMap>
|
|
||||||
//! [include]
|
|
||||||
#include "finddialog.h"
|
|
||||||
//! [include]
|
|
||||||
|
|
||||||
namespace Ui
|
|
||||||
{
|
|
||||||
class AddressBook;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AddressBook : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
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();
|
|
||||||
//! [slot definition]
|
|
||||||
void findContact();
|
|
||||||
//! [slot definition]
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AddressBook *ui;
|
|
||||||
void updateInterface(Mode mode);
|
|
||||||
|
|
||||||
QMap<QString, QString> contacts;
|
|
||||||
QString oldName;
|
|
||||||
QString oldAddress;
|
|
||||||
Mode currentMode;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ADDRESSBOOK_H
|
|
@@ -1,126 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AddressBook</class>
|
|
||||||
<widget class="QWidget" name="AddressBook">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>470</width>
|
|
||||||
<height>253</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<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>
|
|
||||||
<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"/>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@@ -1,80 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include "finddialog.h"
|
|
||||||
#include "ui_finddialog.h"
|
|
||||||
#include <QMessageBox>
|
|
||||||
|
|
||||||
//! [constructor]
|
|
||||||
FindDialog::FindDialog(QWidget *parent) :
|
|
||||||
QDialog(parent),
|
|
||||||
m_ui(new Ui::FindDialog)
|
|
||||||
{
|
|
||||||
m_ui->setupUi(this);
|
|
||||||
|
|
||||||
connect(m_ui->findButton, SIGNAL(clicked()), this, SLOT(findClicked()));
|
|
||||||
|
|
||||||
setWindowTitle(tr("Find a Contact"));
|
|
||||||
}
|
|
||||||
//! [constructor]
|
|
||||||
|
|
||||||
FindDialog::~FindDialog()
|
|
||||||
{
|
|
||||||
delete m_ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! [findClicked]
|
|
||||||
void FindDialog::findClicked()
|
|
||||||
{
|
|
||||||
QString text = m_ui->lineEdit->text();
|
|
||||||
|
|
||||||
if (text.isEmpty()) {
|
|
||||||
QMessageBox::information(this, tr("Empty Field"),
|
|
||||||
tr("Please enter a name."));
|
|
||||||
reject();
|
|
||||||
} else {
|
|
||||||
accept();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//! [findClicked]
|
|
||||||
|
|
||||||
//! [findText]
|
|
||||||
QString FindDialog::findText()
|
|
||||||
{
|
|
||||||
return m_ui->lineEdit->text();
|
|
||||||
}
|
|
||||||
//! [findText]
|
|
@@ -1,69 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#ifndef FINDDIALOG_H
|
|
||||||
#define FINDDIALOG_H
|
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
#include <QLineEdit>
|
|
||||||
#include <QPushButton>
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class FindDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
class FindDialog : public QDialog {
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
FindDialog(QWidget *parent = 0);
|
|
||||||
~FindDialog();
|
|
||||||
//! [findText]
|
|
||||||
QString findText();
|
|
||||||
//! [findText]
|
|
||||||
|
|
||||||
//! [findClicked]
|
|
||||||
public slots:
|
|
||||||
void findClicked();
|
|
||||||
//! [findClicked]
|
|
||||||
|
|
||||||
//! [private members]
|
|
||||||
private:
|
|
||||||
Ui::FindDialog *m_ui;
|
|
||||||
//! [private members]
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // FINDDIALOG_H
|
|
@@ -1,59 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>FindDialog</class>
|
|
||||||
<widget class="QDialog" name="FindDialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>486</width>
|
|
||||||
<height>65</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Dialog</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Enter the name of a contact:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="lineEdit"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="findButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Find</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections>
|
|
||||||
<connection>
|
|
||||||
<sender>findButton</sender>
|
|
||||||
<signal>clicked()</signal>
|
|
||||||
<receiver>FindDialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>415</x>
|
|
||||||
<y>42</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>385</x>
|
|
||||||
<y>50</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
|
@@ -1,47 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include <QApplication>
|
|
||||||
#include "addressbook.h"
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
QApplication a(argc, argv);
|
|
||||||
AddressBook w;
|
|
||||||
w.show();
|
|
||||||
return a.exec();
|
|
||||||
}
|
|
@@ -1,12 +0,0 @@
|
|||||||
# -------------------------------------------------
|
|
||||||
# Project created by QtCreator 2009-06-08T17:25:28
|
|
||||||
# -------------------------------------------------
|
|
||||||
TARGET = part5
|
|
||||||
TEMPLATE = app
|
|
||||||
SOURCES += main.cpp \
|
|
||||||
addressbook.cpp \
|
|
||||||
finddialog.cpp
|
|
||||||
HEADERS += addressbook.h \
|
|
||||||
finddialog.h
|
|
||||||
FORMS += addressbook.ui \
|
|
||||||
finddialog.ui
|
|
@@ -1,351 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include <QFileDialog>
|
|
||||||
|
|
||||||
#include "addressbook.h"
|
|
||||||
#include "ui_addressbook.h"
|
|
||||||
|
|
||||||
AddressBook::AddressBook(QWidget *parent)
|
|
||||||
: QWidget(parent), ui(new Ui::AddressBook)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
ui->nextButton->setEnabled(false);
|
|
||||||
ui->previousButton->setEnabled(false);
|
|
||||||
ui->editButton->setEnabled(false);
|
|
||||||
ui->removeButton->setEnabled(false);
|
|
||||||
|
|
||||||
connect(ui->addButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(addContact()));
|
|
||||||
connect(ui->submitButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(submitContact()));
|
|
||||||
connect(ui->cancelButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(cancel()));
|
|
||||||
connect(ui->nextButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(next()));
|
|
||||||
connect(ui->previousButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(previous()));
|
|
||||||
connect(ui->editButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(editContact()));
|
|
||||||
connect(ui->removeButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(removeContact()));
|
|
||||||
connect(ui->findButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(findContact()));
|
|
||||||
//! [connectSlots]
|
|
||||||
connect(ui->loadButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(loadFromFile()));
|
|
||||||
connect(ui->saveButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(saveToFile()));
|
|
||||||
//! [connectSlots]
|
|
||||||
|
|
||||||
setWindowTitle(tr("Simple Address Book"));
|
|
||||||
}
|
|
||||||
|
|
||||||
AddressBook::~AddressBook()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::addContact()
|
|
||||||
{
|
|
||||||
oldName = ui->nameLine->text();
|
|
||||||
oldAddress = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
|
|
||||||
updateInterface(AddingMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::submitContact()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
if (name.isEmpty() || address.isEmpty()) {
|
|
||||||
QMessageBox::information(this, tr("Empty Field"),
|
|
||||||
tr("Please enter a name and address."));
|
|
||||||
updateInterface(NavigationMode);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
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()
|
|
||||||
{
|
|
||||||
ui->nameLine->setText(oldName);
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
|
|
||||||
updateInterface(NavigationMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::next()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QMap<QString, QString>::iterator i = contacts.find(name);
|
|
||||||
|
|
||||||
if (i != contacts.end())
|
|
||||||
i++;
|
|
||||||
if (i == contacts.end())
|
|
||||||
i = contacts.begin();
|
|
||||||
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::previous()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QMap<QString, QString>::iterator i = contacts.find(name);
|
|
||||||
|
|
||||||
if (i == contacts.end()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == contacts.begin())
|
|
||||||
i = contacts.end();
|
|
||||||
|
|
||||||
i--;
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::editContact()
|
|
||||||
{
|
|
||||||
oldName = ui->nameLine->text();
|
|
||||||
oldAddress = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
updateInterface(EditingMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::removeContact()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->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:
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(false);
|
|
||||||
ui->nameLine->setFocus(Qt::OtherFocusReason);
|
|
||||||
ui->addressText->setReadOnly(false);
|
|
||||||
|
|
||||||
ui->addButton->setEnabled(false);
|
|
||||||
ui->editButton->setEnabled(false);
|
|
||||||
ui->removeButton->setEnabled(false);
|
|
||||||
|
|
||||||
ui->nextButton->setEnabled(false);
|
|
||||||
ui->previousButton->setEnabled(false);
|
|
||||||
|
|
||||||
ui->submitButton->show();
|
|
||||||
ui->cancelButton->show();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case NavigationMode:
|
|
||||||
|
|
||||||
if (contacts.isEmpty()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->addButton->setEnabled(true);
|
|
||||||
|
|
||||||
int number = contacts.size();
|
|
||||||
ui->editButton->setEnabled(number >= 1);
|
|
||||||
ui->removeButton->setEnabled(number >= 1);
|
|
||||||
ui->findButton->setEnabled(number > 2);
|
|
||||||
ui->nextButton->setEnabled(number > 1);
|
|
||||||
ui->previousButton->setEnabled(number >1);
|
|
||||||
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::findContact()
|
|
||||||
{
|
|
||||||
FindDialog dialog;
|
|
||||||
|
|
||||||
if (dialog.exec() == QDialog::Accepted) {
|
|
||||||
QString contactName = dialog.findText();
|
|
||||||
|
|
||||||
if (contacts.contains(contactName)) {
|
|
||||||
ui->nameLine->setText(contactName);
|
|
||||||
ui->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);
|
|
||||||
}
|
|
||||||
|
|
||||||
//! [saveToFile part1]
|
|
||||||
void AddressBook::saveToFile()
|
|
||||||
{
|
|
||||||
QString fileName = QFileDialog::getSaveFileName(this,
|
|
||||||
tr("Save Address Book"), "",
|
|
||||||
tr("Address book (*.abk);; AllFiles (*)"));
|
|
||||||
//! [saveToFile part1]
|
|
||||||
|
|
||||||
//! [saveToFile part2]
|
|
||||||
if (fileName.isEmpty())
|
|
||||||
return;
|
|
||||||
else {
|
|
||||||
QFile file(fileName);
|
|
||||||
|
|
||||||
if (!file.open(QIODevice::WriteOnly)) {
|
|
||||||
QMessageBox::information(this, tr("Unable to open file"),
|
|
||||||
file.errorString());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//! [saveToFile part2]
|
|
||||||
|
|
||||||
//! [saveToFile part3]
|
|
||||||
QDataStream out(&file);
|
|
||||||
out.setVersion(QDataStream::Qt_4_5);
|
|
||||||
out << contacts;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//! [saveToFile part3]
|
|
||||||
|
|
||||||
//! [loadFromFile part1]
|
|
||||||
void AddressBook::loadFromFile()
|
|
||||||
{
|
|
||||||
QString fileName = QFileDialog::getOpenFileName(this,
|
|
||||||
tr("Open Address Book"), "",
|
|
||||||
tr("Address Book(*.abk);; All Files(*)"));
|
|
||||||
//! [loadFromFile part1]
|
|
||||||
|
|
||||||
//! [loadFromFile part2]
|
|
||||||
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.clear(); // remove all items
|
|
||||||
in >> contacts;
|
|
||||||
//! [loadFromFile part2]
|
|
||||||
|
|
||||||
//! [loadFromFile part3]
|
|
||||||
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();
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateInterface(NavigationMode);
|
|
||||||
}
|
|
||||||
//! [loadFromFile part3]
|
|
@@ -1,85 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#ifndef ADDRESSBOOK_H
|
|
||||||
#define ADDRESSBOOK_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QMessageBox>
|
|
||||||
#include <QMap>
|
|
||||||
#include "finddialog.h"
|
|
||||||
|
|
||||||
namespace Ui
|
|
||||||
{
|
|
||||||
class AddressBook;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AddressBook : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
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();
|
|
||||||
//! [slot definition]
|
|
||||||
void saveToFile();
|
|
||||||
void loadFromFile();
|
|
||||||
//! [slot definition]
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AddressBook *ui;
|
|
||||||
void updateInterface(Mode mode);
|
|
||||||
|
|
||||||
QMap<QString, QString> contacts;
|
|
||||||
QString oldName;
|
|
||||||
QString oldAddress;
|
|
||||||
Mode currentMode;
|
|
||||||
FindDialog *dialog;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ADDRESSBOOK_H
|
|
@@ -1,146 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AddressBook</class>
|
|
||||||
<widget class="QWidget" name="AddressBook">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>478</width>
|
|
||||||
<height>352</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<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"/>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@@ -1,74 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include "finddialog.h"
|
|
||||||
#include "ui_finddialog.h"
|
|
||||||
#include <QMessageBox>
|
|
||||||
|
|
||||||
FindDialog::FindDialog(QWidget *parent) :
|
|
||||||
QDialog(parent),
|
|
||||||
m_ui(new Ui::FindDialog)
|
|
||||||
{
|
|
||||||
m_ui->setupUi(this);
|
|
||||||
|
|
||||||
connect(m_ui->findButton, SIGNAL(clicked()), this, SLOT(findClicked()));
|
|
||||||
|
|
||||||
setWindowTitle(tr("Find a Contact"));
|
|
||||||
}
|
|
||||||
|
|
||||||
FindDialog::~FindDialog()
|
|
||||||
{
|
|
||||||
delete m_ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindDialog::findClicked()
|
|
||||||
{
|
|
||||||
QString text = m_ui->lineEdit->text();
|
|
||||||
|
|
||||||
if (text.isEmpty()) {
|
|
||||||
QMessageBox::information(this, tr("Empty Field"),
|
|
||||||
tr("Please enter a name."));
|
|
||||||
reject();
|
|
||||||
} else {
|
|
||||||
accept();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString FindDialog::findText()
|
|
||||||
{
|
|
||||||
return m_ui->lineEdit->text();
|
|
||||||
}
|
|
@@ -1,63 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#ifndef FINDDIALOG_H
|
|
||||||
#define FINDDIALOG_H
|
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
#include <QLineEdit>
|
|
||||||
#include <QPushButton>
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class FindDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
class FindDialog : public QDialog {
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
FindDialog(QWidget *parent = 0);
|
|
||||||
~FindDialog();
|
|
||||||
QString findText();
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void findClicked();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::FindDialog *m_ui;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // FINDDIALOG_H
|
|
@@ -1,42 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>FindDialog</class>
|
|
||||||
<widget class="QDialog" name="FindDialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>475</width>
|
|
||||||
<height>71</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Dialog</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Enter the name of a contact:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="lineEdit"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="findButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Find</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@@ -1,47 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include <QApplication>
|
|
||||||
#include "addressbook.h"
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
QApplication a(argc, argv);
|
|
||||||
AddressBook w;
|
|
||||||
w.show();
|
|
||||||
return a.exec();
|
|
||||||
}
|
|
@@ -1,12 +0,0 @@
|
|||||||
# -------------------------------------------------
|
|
||||||
# Project created by QtCreator 2009-07-01T16:46:33
|
|
||||||
# -------------------------------------------------
|
|
||||||
TARGET = part6
|
|
||||||
TEMPLATE = app
|
|
||||||
SOURCES += main.cpp \
|
|
||||||
addressbook.cpp \
|
|
||||||
finddialog.cpp
|
|
||||||
HEADERS += addressbook.h \
|
|
||||||
finddialog.h
|
|
||||||
FORMS += addressbook.ui \
|
|
||||||
finddialog.ui
|
|
@@ -1,392 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include <QFileDialog>
|
|
||||||
#include <QTextStream>
|
|
||||||
|
|
||||||
#include "addressbook.h"
|
|
||||||
#include "ui_addressbook.h"
|
|
||||||
|
|
||||||
AddressBook::AddressBook(QWidget *parent)
|
|
||||||
: QWidget(parent), ui(new Ui::AddressBook)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
ui->nextButton->setEnabled(false);
|
|
||||||
ui->previousButton->setEnabled(false);
|
|
||||||
ui->editButton->setEnabled(false);
|
|
||||||
ui->removeButton->setEnabled(false);
|
|
||||||
|
|
||||||
connect(ui->addButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(addContact()));
|
|
||||||
connect(ui->submitButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(submitContact()));
|
|
||||||
connect(ui->cancelButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(cancel()));
|
|
||||||
connect(ui->nextButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(next()));
|
|
||||||
connect(ui->previousButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(previous()));
|
|
||||||
connect(ui->editButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(editContact()));
|
|
||||||
connect(ui->removeButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(removeContact()));
|
|
||||||
connect(ui->findButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(findContact()));
|
|
||||||
connect(ui->exportButton, SIGNAL(clicked()), this,
|
|
||||||
SLOT(exportAsVCard()));
|
|
||||||
|
|
||||||
setWindowTitle(tr("Simple Address Book"));
|
|
||||||
}
|
|
||||||
|
|
||||||
AddressBook::~AddressBook()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::addContact()
|
|
||||||
{
|
|
||||||
oldName = ui->nameLine->text();
|
|
||||||
oldAddress = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
|
|
||||||
updateInterface(AddingMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::submitContact()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
if (name.isEmpty() || address.isEmpty()) {
|
|
||||||
QMessageBox::information(this, tr("Empty Field"),
|
|
||||||
tr("Please enter a name and address."));
|
|
||||||
updateInterface(NavigationMode);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
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()
|
|
||||||
{
|
|
||||||
ui->nameLine->setText(oldName);
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
|
|
||||||
updateInterface(NavigationMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::next()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QMap<QString, QString>::iterator i = contacts.find(name);
|
|
||||||
|
|
||||||
if (i != contacts.end())
|
|
||||||
i++;
|
|
||||||
if (i == contacts.end())
|
|
||||||
i = contacts.begin();
|
|
||||||
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::previous()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QMap<QString, QString>::iterator i = contacts.find(name);
|
|
||||||
|
|
||||||
if (i == contacts.end()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == contacts.begin())
|
|
||||||
i = contacts.end();
|
|
||||||
|
|
||||||
i--;
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::editContact()
|
|
||||||
{
|
|
||||||
oldName = ui->nameLine->text();
|
|
||||||
oldAddress = ui->addressText->toPlainText();
|
|
||||||
|
|
||||||
updateInterface(EditingMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::removeContact()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->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:
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(false);
|
|
||||||
ui->nameLine->setFocus(Qt::OtherFocusReason);
|
|
||||||
ui->addressText->setReadOnly(false);
|
|
||||||
|
|
||||||
ui->addButton->setEnabled(false);
|
|
||||||
ui->editButton->setEnabled(false);
|
|
||||||
ui->removeButton->setEnabled(false);
|
|
||||||
|
|
||||||
ui->nextButton->setEnabled(false);
|
|
||||||
ui->previousButton->setEnabled(false);
|
|
||||||
|
|
||||||
ui->submitButton->show();
|
|
||||||
ui->cancelButton->show();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case NavigationMode:
|
|
||||||
|
|
||||||
if (contacts.isEmpty()) {
|
|
||||||
ui->nameLine->clear();
|
|
||||||
ui->addressText->clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->nameLine->setReadOnly(true);
|
|
||||||
ui->addressText->setReadOnly(true);
|
|
||||||
ui->addButton->setEnabled(true);
|
|
||||||
|
|
||||||
int number = contacts.size();
|
|
||||||
ui->editButton->setEnabled(number >= 1);
|
|
||||||
ui->removeButton->setEnabled(number >= 1);
|
|
||||||
ui->findButton->setEnabled(number > 2);
|
|
||||||
ui->nextButton->setEnabled(number > 1);
|
|
||||||
ui->previousButton->setEnabled(number >1);
|
|
||||||
|
|
||||||
ui->submitButton->hide();
|
|
||||||
ui->cancelButton->hide();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::findContact()
|
|
||||||
{
|
|
||||||
FindDialog dialog;
|
|
||||||
|
|
||||||
if (dialog.exec() == QDialog::Accepted) {
|
|
||||||
QString contactName = dialog.findText();
|
|
||||||
|
|
||||||
if (contacts.contains(contactName)) {
|
|
||||||
ui->nameLine->setText(contactName);
|
|
||||||
ui->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();
|
|
||||||
ui->nameLine->setText(i.key());
|
|
||||||
ui->addressText->setText(i.value());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateInterface(NavigationMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddressBook::exportAsVCard()
|
|
||||||
{
|
|
||||||
QString name = ui->nameLine->text();
|
|
||||||
QString address = ui->addressText->toPlainText();
|
|
||||||
QString firstName;
|
|
||||||
QString lastName;
|
|
||||||
QStringList nameList;
|
|
||||||
|
|
||||||
int index = name.indexOf(" ");
|
|
||||||
|
|
||||||
if (index != -1) {
|
|
||||||
nameList = name.split(QRegExp("\\s+"), QString::SkipEmptyParts);
|
|
||||||
firstName = nameList.first();
|
|
||||||
lastName = nameList.last();
|
|
||||||
} else {
|
|
||||||
firstName = name;
|
|
||||||
lastName.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
QString fileName = QFileDialog::getSaveFileName(this,
|
|
||||||
tr("Export Coontact"), "",
|
|
||||||
tr("vCard files (*.vcf);;All Files (*)"));
|
|
||||||
|
|
||||||
if (fileName.isEmpty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
QFile file(fileName);
|
|
||||||
|
|
||||||
if (!file.open(QIODevice::WriteOnly)) {
|
|
||||||
QMessageBox::information(this, tr("Unable to open file"),
|
|
||||||
file.errorString());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
QTextStream out(&file);
|
|
||||||
|
|
||||||
out << "BEGIN:VCARD" << "\n";
|
|
||||||
out << "VERSION:2.1" << "\n";
|
|
||||||
out << "N:" << lastName << ";" << firstName << "\n";
|
|
||||||
|
|
||||||
if (!nameList.isEmpty())
|
|
||||||
out << "FN:" << nameList.join(" ") << "\n";
|
|
||||||
else
|
|
||||||
out << "FN:" << firstName << "\n";
|
|
||||||
|
|
||||||
address.replace(';', "\\;", Qt::CaseInsensitive);
|
|
||||||
address.replace('\n', ";", Qt::CaseInsensitive);
|
|
||||||
address.replace(',', " ", Qt::CaseInsensitive);
|
|
||||||
|
|
||||||
out << "ADR;HOME:;" << address << "\n";
|
|
||||||
out << "END;VCARD" << "\n";
|
|
||||||
|
|
||||||
QMessageBox::information(this, tr("Export Successful"),
|
|
||||||
tr("\"%1\" has been exported as a vCard.").arg(name));
|
|
||||||
}
|
|
@@ -1,86 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#ifndef ADDRESSBOOK_H
|
|
||||||
#define ADDRESSBOOK_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QMessageBox>
|
|
||||||
#include <QMap>
|
|
||||||
#include "finddialog.h"
|
|
||||||
|
|
||||||
namespace Ui
|
|
||||||
{
|
|
||||||
class AddressBook;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AddressBook : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
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();
|
|
||||||
//! [slot definition]
|
|
||||||
void exportAsVCard();
|
|
||||||
//! [slot definition]
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AddressBook *ui;
|
|
||||||
void updateInterface(Mode mode);
|
|
||||||
|
|
||||||
QMap<QString, QString> contacts;
|
|
||||||
QString oldName;
|
|
||||||
QString oldAddress;
|
|
||||||
Mode currentMode;
|
|
||||||
FindDialog *dialog;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ADDRESSBOOK_H
|
|
@@ -1,156 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AddressBook</class>
|
|
||||||
<widget class="QWidget" name="AddressBook">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>600</width>
|
|
||||||
<height>400</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<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>
|
|
||||||
<widget class="QPushButton" name="exportButton">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Export as vCard</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Export</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"/>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@@ -1,74 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include "finddialog.h"
|
|
||||||
#include "ui_finddialog.h"
|
|
||||||
#include <QMessageBox>
|
|
||||||
|
|
||||||
FindDialog::FindDialog(QWidget *parent) :
|
|
||||||
QDialog(parent),
|
|
||||||
m_ui(new Ui::FindDialog)
|
|
||||||
{
|
|
||||||
m_ui->setupUi(this);
|
|
||||||
|
|
||||||
connect(m_ui->findButton, SIGNAL(clicked()), this, SLOT(findClicked()));
|
|
||||||
|
|
||||||
setWindowTitle(tr("Find a Contact"));
|
|
||||||
}
|
|
||||||
|
|
||||||
FindDialog::~FindDialog()
|
|
||||||
{
|
|
||||||
delete m_ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindDialog::findClicked()
|
|
||||||
{
|
|
||||||
QString text = m_ui->lineEdit->text();
|
|
||||||
|
|
||||||
if (text.isEmpty()) {
|
|
||||||
QMessageBox::information(this, tr("Empty Field"),
|
|
||||||
tr("Please enter a name."));
|
|
||||||
reject();
|
|
||||||
} else {
|
|
||||||
accept();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString FindDialog::findText()
|
|
||||||
{
|
|
||||||
return m_ui->lineEdit->text();
|
|
||||||
}
|
|
@@ -1,63 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#ifndef FINDDIALOG_H
|
|
||||||
#define FINDDIALOG_H
|
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
#include <QLineEdit>
|
|
||||||
#include <QPushButton>
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class FindDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
class FindDialog : public QDialog {
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
FindDialog(QWidget *parent = 0);
|
|
||||||
~FindDialog();
|
|
||||||
QString findText();
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void findClicked();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::FindDialog *m_ui;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // FINDDIALOG_H
|
|
@@ -1,42 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>FindDialog</class>
|
|
||||||
<widget class="QDialog" name="FindDialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>555</width>
|
|
||||||
<height>73</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Dialog</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Enter the name of a contact:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="lineEdit"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="findButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Find</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@@ -1,47 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include <QApplication>
|
|
||||||
#include "addressbook.h"
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
QApplication a(argc, argv);
|
|
||||||
AddressBook w;
|
|
||||||
w.show();
|
|
||||||
return a.exec();
|
|
||||||
}
|
|
@@ -1,12 +0,0 @@
|
|||||||
# -------------------------------------------------
|
|
||||||
# Project created by QtCreator 2009-07-07T17:10:19
|
|
||||||
# -------------------------------------------------
|
|
||||||
TARGET = part7
|
|
||||||
TEMPLATE = app
|
|
||||||
SOURCES += main.cpp \
|
|
||||||
addressbook.cpp \
|
|
||||||
finddialog.cpp
|
|
||||||
HEADERS += addressbook.h \
|
|
||||||
finddialog.h
|
|
||||||
FORMS += addressbook.ui \
|
|
||||||
finddialog.ui
|
|
@@ -1,19 +0,0 @@
|
|||||||
# Add more folders to ship with the application, here
|
|
||||||
folder_01.source = qml/BatteryStatus
|
|
||||||
folder_01.target = qml
|
|
||||||
DEPLOYMENTFOLDERS = folder_01
|
|
||||||
|
|
||||||
# Additional import path used to resolve QML modules in Creator's code model
|
|
||||||
QML_IMPORT_PATH =
|
|
||||||
|
|
||||||
# If your application uses the Qt Mobility libraries, uncomment the following
|
|
||||||
# lines and add the respective components to the MOBILITY variable.
|
|
||||||
CONFIG += mobility
|
|
||||||
MOBILITY += systeminfo
|
|
||||||
|
|
||||||
# The .cpp file which was generated for your project. Feel free to hack it.
|
|
||||||
SOURCES += main.cpp
|
|
||||||
|
|
||||||
# Please do not modify the following two lines. Required for deployment.
|
|
||||||
include(qmlapplicationviewer/qmlapplicationviewer.pri)
|
|
||||||
qtcAddDeployment()
|
|
@@ -1,51 +0,0 @@
|
|||||||
/***************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** All rights reserved.
|
|
||||||
** Contact: http://www.qt-project.org/
|
|
||||||
**
|
|
||||||
** This file is part of the documentation of Qt Creator.
|
|
||||||
**
|
|
||||||
** You may use this file under the terms of the BSD license as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor
|
|
||||||
** the names of its contributors may be used to endorse or promote
|
|
||||||
** products derived from this software without specific prior written
|
|
||||||
** permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include <QApplication>
|
|
||||||
#include "qmlapplicationviewer.h"
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
QApplication app(argc, argv);
|
|
||||||
|
|
||||||
QmlApplicationViewer viewer;
|
|
||||||
viewer.setMainQmlFile(QLatin1String("qml/BatteryStatus/main.qml"));
|
|
||||||
viewer.showExpanded();
|
|
||||||
|
|
||||||
return app.exec();
|
|
||||||
}
|
|
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 384 B |
Before Width: | Height: | Size: 726 B |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 100 KiB |
BIN
doc/images/qtcreator-blackberry-deployQt.png
Normal file
After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 856 B |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 992 B |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 13 KiB |