Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
59ebd373
Commit
59ebd373
authored
Jul 10, 2009
by
Kavindra Devi Palaraja
Browse files
Doc - Starting on Part 7
Reviewed-By: TrustMe
parent
00025f93
Changes
4
Hide whitespace changes
Inline
Side-by-side
doc/examples/addressbook-sdk/part7/addressbook.cpp
View file @
59ebd373
...
...
@@ -5,9 +5,325 @@ AddressBook::AddressBook(QWidget *parent)
:
QWidget
(
parent
),
ui
(
new
Ui
::
AddressBook
)
{
ui
->
setupUi
(
this
);
nameLine
=
new
QLineEdit
;
nameLine
=
ui
->
nameLine
;
nameLine
->
setReadOnly
(
true
);
addressText
=
new
QTextEdit
;
addressText
=
ui
->
addressText
;
addressText
->
setReadOnly
(
true
);
addButton
=
new
QPushButton
;
addButton
=
ui
->
addButton
;
submitButton
=
new
QPushButton
;
submitButton
=
ui
->
submitButton
;
submitButton
->
hide
();
cancelButton
=
new
QPushButton
;
cancelButton
=
ui
->
cancelButton
;
cancelButton
->
hide
();
nextButton
=
new
QPushButton
;
nextButton
=
ui
->
nextButton
;
nextButton
->
setEnabled
(
false
);
previousButton
=
new
QPushButton
;
previousButton
=
ui
->
previousButton
;
previousButton
->
setEnabled
(
false
);
editButton
=
new
QPushButton
;
editButton
=
ui
->
editButton
;
editButton
->
setEnabled
(
false
);
removeButton
=
new
QPushButton
;
removeButton
=
ui
->
removeButton
;
removeButton
->
setEnabled
(
false
);
findButton
=
new
QPushButton
;
findButton
=
ui
->
findButton
;
dialog
=
new
FindDialog
;
loadButton
=
new
QPushButton
;
loadButton
=
ui
->
loadButton
;
saveButton
=
new
QPushButton
;
saveButton
=
ui
->
saveButton
;
connect
(
addButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
addContact
()));
connect
(
submitButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
submitContact
()));
connect
(
cancelButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
cancel
()));
connect
(
nextButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
next
()));
connect
(
previousButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
previous
()));
connect
(
editButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
editContact
()));
connect
(
removeButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
removeContact
()));
connect
(
findButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
findContact
()));
setWindowTitle
(
tr
(
"Simple Address Book"
));
}
AddressBook
::~
AddressBook
()
{
delete
ui
;
}
void
AddressBook
::
addContact
()
{
oldName
=
nameLine
->
text
();
oldAddress
=
addressText
->
toPlainText
();
nameLine
->
clear
();
addressText
->
clear
();
updateInterface
(
AddingMode
);
}
void
AddressBook
::
submitContact
()
{
QString
name
=
nameLine
->
text
();
QString
address
=
addressText
->
toPlainText
();
if
(
name
==
""
||
address
==
""
)
{
QMessageBox
::
information
(
this
,
tr
(
"Empty Field"
),
tr
(
"Please enter a name and address."
));
}
if
(
currentMode
==
AddingMode
)
{
if
(
!
contacts
.
contains
(
name
))
{
contacts
.
insert
(
name
,
address
);
QMessageBox
::
information
(
this
,
tr
(
"Add Successful"
),
tr
(
"
\"
%1
\"
has been added to your address book."
).
arg
(
name
));
}
else
{
QMessageBox
::
information
(
this
,
tr
(
"Add Unsuccessful"
),
tr
(
"Sorry,
\"
%1
\"
is already in your address book."
).
arg
(
name
));
}
}
else
if
(
currentMode
==
EditingMode
)
{
if
(
oldName
!=
name
)
{
if
(
!
contacts
.
contains
(
name
))
{
QMessageBox
::
information
(
this
,
tr
(
"Edit Successful"
),
tr
(
"
\"
%1
\"
has been edited in your address book."
).
arg
(
oldName
));
contacts
.
remove
(
oldName
);
contacts
.
insert
(
name
,
address
);
}
else
{
QMessageBox
::
information
(
this
,
tr
(
"Edit Unsuccessful"
),
tr
(
"Sorry,
\"
%1
\"
is already in your address book."
).
arg
(
name
));
}
}
else
if
(
oldAddress
!=
address
)
{
QMessageBox
::
information
(
this
,
tr
(
"Edit Successful"
),
tr
(
"
\"
%1
\"
has been edited in your address book."
).
arg
(
name
));
contacts
[
name
]
=
address
;
}
}
updateInterface
(
NavigationMode
);
}
void
AddressBook
::
cancel
()
{
nameLine
->
setText
(
oldName
);
nameLine
->
setReadOnly
(
true
);
updateInterface
(
NavigationMode
);
}
void
AddressBook
::
next
()
{
QString
name
=
nameLine
->
text
();
QMap
<
QString
,
QString
>::
iterator
i
=
contacts
.
find
(
name
);
if
(
i
!=
contacts
.
end
())
i
++
;
if
(
i
==
contacts
.
end
())
i
=
contacts
.
begin
();
nameLine
->
setText
(
i
.
key
());
addressText
->
setText
(
i
.
value
());
}
void
AddressBook
::
previous
()
{
QString
name
=
nameLine
->
text
();
QMap
<
QString
,
QString
>::
iterator
i
=
contacts
.
find
(
name
);
if
(
i
==
contacts
.
end
())
{
nameLine
->
clear
();
addressText
->
clear
();
return
;
}
if
(
i
==
contacts
.
begin
())
i
=
contacts
.
end
();
i
--
;
nameLine
->
setText
(
i
.
key
());
addressText
->
setText
(
i
.
value
());
}
void
AddressBook
::
editContact
()
{
oldName
=
nameLine
->
text
();
oldAddress
=
addressText
->
toPlainText
();
updateInterface
(
EditingMode
);
}
void
AddressBook
::
removeContact
()
{
QString
name
=
nameLine
->
text
();
QString
address
=
addressText
->
toPlainText
();
if
(
contacts
.
contains
(
name
))
{
int
button
=
QMessageBox
::
question
(
this
,
tr
(
"Confirm Remove"
),
tr
(
"Are you sure you want to remove
\"
%1
\"
?"
).
arg
(
name
),
QMessageBox
::
Yes
|
QMessageBox
::
No
);
if
(
button
==
QMessageBox
::
Yes
)
{
previous
();
contacts
.
remove
(
name
);
QMessageBox
::
information
(
this
,
tr
(
"Remove Successful"
),
tr
(
"
\"
%1
\"
has been removed from your address book."
).
arg
(
name
));
}
}
updateInterface
(
NavigationMode
);
}
void
AddressBook
::
updateInterface
(
Mode
mode
)
{
currentMode
=
mode
;
switch
(
currentMode
)
{
case
AddingMode
:
case
EditingMode
:
nameLine
->
setReadOnly
(
false
);
nameLine
->
setFocus
(
Qt
::
OtherFocusReason
);
addressText
->
setReadOnly
(
false
);
addButton
->
setEnabled
(
false
);
editButton
->
setEnabled
(
false
);
removeButton
->
setEnabled
(
false
);
nextButton
->
setEnabled
(
false
);
previousButton
->
setEnabled
(
false
);
submitButton
->
show
();
cancelButton
->
show
();
break
;
case
NavigationMode
:
if
(
contacts
.
isEmpty
())
{
nameLine
->
clear
();
addressText
->
clear
();
}
nameLine
->
setReadOnly
(
true
);
addressText
->
setReadOnly
(
true
);
addButton
->
setEnabled
(
true
);
int
number
=
contacts
.
size
();
editButton
->
setEnabled
(
number
>=
1
);
removeButton
->
setEnabled
(
number
>=
1
);
findButton
->
setEnabled
(
number
>
2
);
nextButton
->
setEnabled
(
number
>
1
);
previousButton
->
setEnabled
(
number
>
1
);
submitButton
->
hide
();
cancelButton
->
hide
();
break
;
}
}
void
AddressBook
::
findContact
()
{
dialog
->
show
();
if
(
dialog
->
exec
()
==
QDialog
::
Accepted
)
{
QString
contactName
=
dialog
->
getFindText
();
if
(
contacts
.
contains
(
contactName
))
{
nameLine
->
setText
(
contactName
);
addressText
->
setText
(
contacts
.
value
(
contactName
));
}
else
{
QMessageBox
::
information
(
this
,
tr
(
"Contact Not Found"
),
tr
(
"Sorry,
\"
%1
\"
is not in your address book."
).
arg
(
contactName
));
return
;
}
}
updateInterface
(
NavigationMode
);
}
void
AddressBook
::
saveToFile
()
{
QString
fileName
=
QFileDialog
::
getSaveFileName
(
this
,
tr
(
"Save Address Book"
),
""
,
tr
(
"Address book (*.abk);; AllFiles (*)"
));
if
(
fileName
.
isEmpty
())
return
;
else
{
QFile
file
(
fileName
);
if
(
!
file
.
open
(
QIODevice
::
WriteOnly
))
{
QMessageBox
::
information
(
this
,
tr
(
"Unable to open file"
),
file
.
errorString
());
return
;
}
QDataStream
out
(
&
file
);
out
.
setVersion
(
QDataStream
::
Qt_4_5
);
out
<<
contacts
;
}
}
void
AddressBook
::
loadFromFile
()
{
QString
fileName
=
QFileDialog
::
getOpenFileName
(
this
,
tr
(
"Open Address Book"
),
""
,
tr
(
"Address Book(*.abk);; All Files(*)"
));
if
(
fileName
.
isEmpty
())
return
;
else
{
QFile
file
(
fileName
);
if
(
!
file
.
open
(
QIODevice
::
ReadOnly
))
{
QMessageBox
::
information
(
this
,
tr
(
"Unable to open file"
),
file
.
errorString
());
return
;
}
QDataStream
in
(
&
file
);
in
.
setVersion
(
QDataStream
::
Qt_4_5
);
contacts
.
empty
();
// empty existing contacts
in
>>
contacts
;
if
(
contacts
.
isEmpty
())
{
QMessagebox
::
information
(
this
,
tr
(
"No contacts in file"
),
tr
(
"The file you are attempting to open contains no contacts."
));
}
else
{
QMap
<
QString
,
QString
>::
iterator
i
=
contacts
.
begin
();
nameLine
->
setText
(
i
.
key
());
addressText
->
setText
(
i
.
value
());
}
}
updateInterface
(
NavigationMode
);
}
doc/examples/addressbook-sdk/part7/addressbook.h
View file @
59ebd373
...
...
@@ -2,6 +2,11 @@
#define ADDRESSBOOK_H
#include
<QtGui/QWidget>
#include
<QtGui/QPushButton>
#include
<QtGui/QLineEdit>
#include
<QtGui/QTextEdit>
#include
<QtGui/QMessageBox>
#include
"finddialog.h"
namespace
Ui
{
...
...
@@ -14,10 +19,43 @@ class AddressBook : public QWidget
public:
AddressBook
(
QWidget
*
parent
=
0
);
enum
Mode
{
NavigationMode
,
AddingMode
,
EditingMode
};
~
AddressBook
();
public
slots
:
void
addContact
();
void
submitContact
();
void
cancel
();
void
editContact
();
void
removeContact
();
void
next
();
void
previous
();
void
findContact
();
void
saveToFile
();
void
loadFromFile
();
private:
Ui
::
AddressBook
*
ui
;
void
updateInterface
(
Mode
mode
);
QPushButton
*
addButton
;
QPushButton
*
submitButton
;
QPushButton
*
cancelButton
;
QPushButton
*
editButton
;
QPushButton
*
removeButton
;
QPushButton
*
nextButton
;
QPushButton
*
previousButton
;
QPushButton
*
findButton
;
QPushButton
*
loadButton
;
QPushButton
*
saveButton
;
QLineEdit
*
nameLine
;
QTextEdit
*
addressText
;
QMap
<
QString
,
QString
>
contacts
;
QString
oldName
;
QString
oldAddress
;
Mode
currentMode
;
FindDialog
*
dialog
;
};
#endif // ADDRESSBOOK_H
doc/examples/addressbook-sdk/part7/addressbook.ui
View file @
59ebd373
<?xml version="1.0" encoding="UTF-8"?>
<ui
version=
"4.0"
>
<class>
AddressBook
</class>
<widget class="QWidget" name="AddressBook"
>
<property name="geometry"
>
<widget
class=
"QWidget"
name=
"AddressBook"
>
<property
name=
"geometry"
>
<rect>
<x>
0
</x>
<y>
0
</y>
...
...
@@ -9,12 +10,137 @@
<height>
400
</height>
</rect>
</property>
<property name="windowTitle"
>
<property
name=
"windowTitle"
>
<string>
AddressBook
</string>
</property>
<layout
class=
"QHBoxLayout"
name=
"horizontalLayout_2"
>
<item>
<layout
class=
"QGridLayout"
name=
"gridLayout"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"nameLabel"
>
<property
name=
"text"
>
<string>
Name:
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QLineEdit"
name=
"nameLine"
/>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"addressLabel"
>
<property
name=
"text"
>
<string>
Address:
</string>
</property>
<property
name=
"alignment"
>
<set>
Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
</set>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"addressText"
/>
</item>
<item
row=
"1"
column=
"2"
>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout"
>
<item>
<widget
class=
"QPushButton"
name=
"addButton"
>
<property
name=
"text"
>
<string>
Add
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"submitButton"
>
<property
name=
"text"
>
<string>
Submit
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"cancelButton"
>
<property
name=
"text"
>
<string>
Cancel
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"editButton"
>
<property
name=
"text"
>
<string>
Edit
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"removeButton"
>
<property
name=
"text"
>
<string>
Remove
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"findButton"
>
<property
name=
"text"
>
<string>
Find
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"loadButton"
>
<property
name=
"toolTip"
>
<string>
Load contacts from a file
</string>
</property>
<property
name=
"text"
>
<string>
Load...
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"saveButton"
>
<property
name=
"toolTip"
>
<string>
Save contacts to a file
</string>
</property>
<property
name=
"text"
>
<string>
Save...
</string>
</property>
</widget>
</item>
<item>
<spacer
name=
"verticalSpacer"
>
<property
name=
"orientation"
>
<enum>
Qt::Vertical
</enum>
</property>
<property
name=
"sizeHint"
stdset=
"0"
>
<size>
<width>
20
</width>
<height>
40
</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item
row=
"2"
column=
"1"
>
<layout
class=
"QHBoxLayout"
name=
"horizontalLayout"
>
<item>
<widget
class=
"QPushButton"
name=
"nextButton"
>
<property
name=
"text"
>
<string>
Previous
</string>
</property>
</widget>
</item>
<item>
<widget
class=
"QPushButton"
name=
"previousButton"
>
<property
name=
"text"
>
<string>
Next
</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<layoutDefault spacing="6" margin="11" />
<pixmapfunction></pixmapfunction>
<layoutdefault
spacing=
"6"
margin=
"11"
/>
<resources/>
<connections/>
</ui>
doc/examples/addressbook-sdk/part7/part7.pro
View file @
59ebd373
#-------------------------------------------------
#
# -------------------------------------------------
#
Project
created
by
QtCreator
2009
-
07
-
07
T17
:
10
:
19
#
#-------------------------------------------------
#
-------------------------------------------------
TARGET
=
part7
TEMPLATE
=
app
SOURCES
+=
main
.
cpp
\
addressbook
.
cpp
HEADERS
+=
addressbook
.
h
FORMS
+=
addressbook
.
ui
SOURCES
+=
main
.
cpp
\
addressbook
.
cpp
\
finddialog
.
cpp
HEADERS
+=
addressbook
.
h
\
finddialog
.
h
FORMS
+=
addressbook
.
ui
\
finddialog
.
ui
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment