summaryrefslogtreecommitdiff
path: root/core/pim/addressbook
Side-by-side diff
Diffstat (limited to 'core/pim/addressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/TODO11
-rw-r--r--core/pim/addressbook/addressbook.cpp9
-rw-r--r--core/pim/addressbook/configdlg_base.ui6
-rw-r--r--core/pim/addressbook/contacteditor.cpp153
-rw-r--r--core/pim/addressbook/contacteditor.h16
5 files changed, 154 insertions, 41 deletions
diff --git a/core/pim/addressbook/TODO b/core/pim/addressbook/TODO
index 96134f4..100a6fd 100644
--- a/core/pim/addressbook/TODO
+++ b/core/pim/addressbook/TODO
@@ -1,43 +1,46 @@
Stuff todo until OPIE 1.0 :
Pending bugfixes from previous work:
Urgent:
Important:
-- Personal contact editor: Disable categories
- Name order selected in "contacteditor" not used in list view.
-- contacteditor: Birthday, annyversary, ... : Use Dateselector
- Overview window cleanup needed..
- Cursor keys should work in detail-view (ablabel)
-- "What's this" should be added
+ -> Ablabel should be removed and Abtable should be increased with
+ different views (as started by darwin zins)..
- Store last settings of combo-boxes
- Finishing of new View functions (List, Phonebook...)
- The names of the countries are sorted by there english names, only..
Even if they are translated.. :S
- Reload if contacts were changed externally
+- "What's this" should be added
Less important:
- The picker (alphabetical sort widget) should be
placed verticaly or horizontally (configurable)
- Use advanced database functions in abtable to decrease
memory footprint and to make everything more easy !
(abtable should store Iterator for selected Category)
Should be Fixed (not absolute sure, need further validation):
-- "Nonenglish" translation bug has to be fixed.
+
Fixed:
- Syncing: abtable not reloaded after sync.
- Find widget should be replaced by something like
qpdf has.
- Adding a configuration dialog
- Picker: Activated letter schould be more visible
- Advanced handling of cursor keys (search..)
- Mail-Icon is missing
- Use opie-mail insted of qt-mail if possible.
- Font menu is invisible using german translation
+- Personal contact editor: Disable categories
+- "Nonenglish" translation bug has to be fixed.
+- contacteditor: Birthday, annyversary, ... : Use Dateselector
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 39d8321..108e66d 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -85,25 +85,25 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
bAbEditFirstTime(TRUE),
syncing(FALSE)
{
isLoading = true;
// Read Config settings
Config cfg("AddressBook");
cfg.setGroup("Search");
useRegExp = cfg.readBoolEntry( "useRegExp" );
caseSensitive = cfg.readBoolEntry( "caseSensitive" );
doNotifyWrapAround = cfg.readBoolEntry( "doNotifyWrapAround" );
cfg.setGroup("Mail");
- m_useQtMail = cfg.readBoolEntry( "useQtMail" );
+ m_useQtMail = cfg.readBoolEntry( "useQtMail", true );
m_useOpieMail=cfg.readBoolEntry( "useOpieMail" );
initFields();
setCaption( tr("Contacts") );
setIcon( Resource::loadPixmap( "AddressBook" ) );
setToolBarsMovable( FALSE );
// Create Toolbars
@@ -664,45 +664,50 @@ void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
}
#endif
}
void AddressbookWindow::editPersonal()
{
QString filename = addressbookPersonalVCardName();
OContact me;
if (QFile::exists(filename))
me = OContact::readVCard( filename )[0];
if (bAbEditFirstTime) {
+ qWarning("Editing personal data");
abEditor = new ContactEditor( me, &orderedFields, &slOrderedFields,
this, "editor" );
// don't create a new editor every time
bAbEditFirstTime = FALSE;
- } else
+ } else{
abEditor->setEntry( me );
+ }
+
+ abEditor->setPersonalView( true );
abEditor->setCaption(tr("Edit My Personal Details"));
abEditor->showMaximized();
// fix the foxus...
abEditor->setNameFocus();
if ( abEditor->exec() ) {
setFocus();
OContact new_personal = abEditor->entry();
QString fname = addressbookPersonalVCardName();
OContact::writeVCard( fname, new_personal );
abView()->init(new_personal);
abView()->sync();
}
abEditor->setCaption( tr("Edit Address") );
+ abEditor->setPersonalView( false );
}
void AddressbookWindow::slotPersonalView()
{
if (!actionPersonal->isOn()) {
// we just turned it off
setCaption( tr("Contacts") );
actionNew->setEnabled(TRUE);
actionTrash->setEnabled(TRUE);
actionFind->setEnabled(TRUE);
slotUpdateToolbar(); // maybe some of the above could be moved there
showList();
diff --git a/core/pim/addressbook/configdlg_base.ui b/core/pim/addressbook/configdlg_base.ui
index d3ea12e..a6fcffa 100644
--- a/core/pim/addressbook/configdlg_base.ui
+++ b/core/pim/addressbook/configdlg_base.ui
@@ -3,26 +3,26 @@
<author>Stefan Eilers</author>
<widget>
<class>QDialog</class>
<property stdset="1">
<name>name</name>
<cstring>Configuration</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>217</width>
- <height>287</height>
+ <width>244</width>
+ <height>298</height>
</rect>
</property>
<property stdset="1">
<name>caption</name>
<string>MyDialog1</string>
</property>
<property stdset="1">
<name>sizeGripEnabled</name>
<bool>true</bool>
</property>
<vbox>
<property stdset="1">
@@ -320,16 +320,18 @@ is provided free !</string>
<connection>
<sender>buttonCancel</sender>
<signal>clicked()</signal>
<receiver>Configuration</receiver>
<slot>reject()</slot>
</connection>
</connections>
<tabstops>
<tabstop>configDlg_base</tabstop>
<tabstop>m_useWildCard</tabstop>
<tabstop>m_useCaseSensitive</tabstop>
<tabstop>m_signalWrapAround</tabstop>
+ <tabstop>m_useQtMail</tabstop>
+ <tabstop>m_useOpieMail</tabstop>
<tabstop>buttonOk</tabstop>
<tabstop>buttonCancel</tabstop>
</tabstops>
</UI>
diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp
index e7f2ebd..a59a927 100644
--- a/core/pim/addressbook/contacteditor.cpp
+++ b/core/pim/addressbook/contacteditor.cpp
@@ -15,58 +15,61 @@
* This is a rewrite of the abeditor.h file, modified to provide a more
* intuitive interface to TrollTech's original Address Book editor. This
* is made to operate exactly in interface with the exception of name.
*
*/
#include "contacteditor.h"
#include "addresspicker.h"
#include <qpe/categoryselect.h>
#include <qpe/qpeapplication.h>
#include <qpe/qpedialog.h>
+#include <qpe/timeconversion.h>
#include <qcombobox.h>
#include <qlabel.h>
#include <qtabwidget.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qmultilineedit.h>
#include <qscrollview.h>
#include <qtoolbutton.h>
#include <qpushbutton.h>
#include <qmainwindow.h>
#include <qvaluelist.h>
+#include <qpopupmenu.h>
static inline bool containsAlphaNum( const QString &str );
static inline bool constainsWhiteSpace( const QString &str );
// helper functions, convert our comma delimited list to proper
// file format...
void parseEmailFrom( const QString &txt, QString &strDefaultEmail,
QString &strAll );
// helper convert from file format to comma delimited...
void parseEmailTo( const QString &strDefaultEmail,
const QString &strOtherEmail, QString &strBack );
ContactEditor::ContactEditor( const OContact &entry,
const QValueList<int> *newOrderedValues,
QStringList *slNewOrdered,
QWidget *parent,
const char *name,
WFlags fl )
: QDialog( parent, name, TRUE, fl ),
orderedValues( newOrderedValues ),
- slOrdered( *slNewOrdered )
+ slOrdered( *slNewOrdered ),
+ m_personalView ( false )
{
init();
initMap();
setEntry( entry );
qDebug("finish");
}
ContactEditor::~ContactEditor() {
}
void ContactEditor::init() {
@@ -197,25 +200,34 @@ void ContactEditor::init() {
//slDynamicEntries->remove( it );
continue;
}
if ( *it == "Emails" ) {
trlChooserNames.append( tr( "Emails" ) );
slChooserNames.append( *it );
slChooserValues.append( "" );
//slDynamicEntries->remove( it );
continue;
}
- if ( *it == "Name Title" || *it == "First Name" || *it == "Middle Name" || *it == "Last Name" || *it == "File As" || *it == "Default Email" || *it == "Emails" || *it == "Groups" )
+ if ( *it == "Name Title" ||
+ *it == "First Name" ||
+ *it == "Middle Name" ||
+ *it == "Last Name" ||
+ *it == "File As" ||
+ *it == "Default Email" ||
+ *it == "Emails" ||
+ *it == "Groups" ||
+ *it == "Anniversary" ||
+ *it == "Birthday" )
continue;
if ( *it == "Name Title" ) {
//slDynamicEntries->remove( it );
continue;
}
if ( *it == "First Name" ) {
// slDynamicEntries->remove( it );
continue;
}
@@ -393,29 +405,39 @@ void ContactEditor::init() {
cmbChooserField3 = new QComboBox( FALSE, container );
cmbChooserField3->setMaximumWidth( 90 );
gl->addWidget( cmbChooserField3, 5, 0 );
txtChooserField3 = new QLineEdit( container );
gl->addWidget( txtChooserField3, 5, 1 );
l = new QLabel( tr( "File As" ), container );
gl->addWidget( l, 6, 0 );
cmbFileAs = new QComboBox( TRUE, container );
gl->addWidget( cmbFileAs, 6, 1 );
- l = new QLabel( tr( "Category" ), container );
- gl->addWidget( l, 7, 0 );
+ labCat = new QLabel( tr( "Category" ), container );
+ gl->addWidget( labCat, 7, 0 );
cmbCat = new CategorySelect( container );
gl->addWidget( cmbCat, 7, 1 );
+ // We don't need categories for the personal view
+ if ( m_personalView ){
+ qWarning("Disable Category..");
+ labCat->hide();
+ cmbCat->hide();
+ } else {
+ labCat->show();
+ cmbCat->show();
+ }
+
btnNote = new QPushButton( tr( "Notes..." ), container );
gl->addWidget( btnNote, 8, 1 );
tabMain->insertTab( tabViewport, tr( "General" ) );
tabViewport = new QWidget ( tabMain );
vb = new QVBoxLayout( tabViewport );
svAddress = new QScrollView( tabViewport );
vb->addWidget( svAddress, 0, 0 );
svAddress->setResizePolicy( QScrollView::AutoOneFit );
@@ -698,44 +720,84 @@ void ContactEditor::init() {
vb = new QVBoxLayout( tabViewport );
svDetails = new QScrollView( tabViewport );
vb->addWidget( svDetails, 0, 0 );
svDetails->setResizePolicy( QScrollView::AutoOneFit );
svDetails->setFrameStyle( QFrame::NoFrame );
container = new QWidget( svDetails->viewport() );
svDetails->addChild( container );
gl = new QGridLayout( container, 1, 2, 2, 4 );
+ int counter = 0;
+
+ // Birthday
+ l = new QLabel( tr("Birthday"), container );
+ gl->addWidget( l, counter, 0 );
+
+ QPopupMenu* m1 = new QPopupMenu( container );
+ birthdayPicker = new DateBookMonth( m1, 0, TRUE );
+ m1->insertItem( birthdayPicker );
+
+ birthdayButton= new QToolButton( container, "buttonStart" );
+ birthdayButton->setPopup( m1 );
+ birthdayButton->setPopupDelay(0);
+ gl->addWidget( birthdayButton, counter , 1 );
+ connect( birthdayPicker, SIGNAL( dateClicked( int, int, int ) ),
+ this, SLOT( slotBirthdayDateChanged( int, int, int ) ) );
+
+ ++counter;
+
+ // Anniversary
+ l = new QLabel( tr("Anniversary"), container );
+ gl->addWidget( l, counter, 0 );
+
+ m1 = new QPopupMenu( container );
+ anniversaryPicker = new DateBookMonth( m1, 0, TRUE );
+ m1->insertItem( anniversaryPicker );
+
+ anniversaryButton= new QToolButton( container, "buttonStart" );
+ anniversaryButton->setPopup( m1 );
+ anniversaryButton->setPopupDelay(0);
+ gl->addWidget( anniversaryButton, counter , 1 );
+ connect( anniversaryPicker, SIGNAL( dateClicked( int, int, int ) ),
+ this, SLOT( slotAnniversaryDateChanged( int, int, int ) ) );
+
+ ++counter;
+
+ // Gender
+ l = new QLabel( tr("Gender"), container );
+ gl->addWidget( l, counter, 0 );
+ cmbGender = new QComboBox( container );
+ cmbGender->insertItem( "", 0 );
+ cmbGender->insertItem( tr("Male"), 1);
+ cmbGender->insertItem( tr("Female"), 2);
+ gl->addWidget( cmbGender, counter, 1 );
+
+ ++counter;
+
// Create Labels and lineedit fields for every dynamic entry
QStringList::ConstIterator it = slDynamicEntries.begin();
- for (i = 0; it != slDynamicEntries.end(); i++, ++it) {
+ for (i = counter; it != slDynamicEntries.end(); i++, ++it) {
l = new QLabel( QString::null , container );
listName.append( l );
gl->addWidget( l, i, 0 );
QLineEdit *e = new QLineEdit( container );
listValue.append( e );
gl->addWidget( e, i, 1);
}
// Fill labels with names..
loadFields();
- l = new QLabel( tr("Gender"), container );
- gl->addWidget( l, slDynamicEntries.count(), 0 );
- cmbGender = new QComboBox( container );
- cmbGender->insertItem( "", 0 );
- cmbGender->insertItem( tr("Male"), 1);
- cmbGender->insertItem( tr("Female"), 2);
- gl->addWidget( cmbGender, slDynamicEntries.count(), 1 );
tabMain->insertTab( tabViewport, tr( "Details" ) );
dlgNote = new QDialog( this, "Note Dialog", TRUE );
dlgNote->setCaption( tr("Enter Note") );
QVBoxLayout *vbNote = new QVBoxLayout( dlgNote );
txtNote = new QMultiLineEdit( dlgNote );
vbNote->addWidget( txtNote );
connect( btnNote, SIGNAL(clicked()), this, SLOT(slotNote()) );
dlgName = new QDialog( this, "Name Dialog", TRUE );
dlgName->setCaption( tr("Edit Name") );
@@ -1000,24 +1062,25 @@ void ContactEditor::slotFullNameChange( const QString &textChanged ) {
cmbFileAs->insertItem( parseName( textChanged, 0 ) );
cmbFileAs->insertItem( parseName( textChanged, 1 ) );
cmbFileAs->insertItem( parseName( textChanged, 2 ) );
cmbFileAs->insertItem( parseName( textChanged, 3 ) );
cmbFileAs->setCurrentItem( index );
useFullName = TRUE;
}
+// Loads the detail fields
void ContactEditor::loadFields() {
QStringList::ConstIterator it;
QListIterator<QLabel> lit( listName );
for ( it = slDynamicEntries.begin(); *lit; ++lit, ++it) {
if ( *it == "Department" )
(*lit)->setText( tr( "Department" ) );
if ( *it == "Company" )
(*lit)->setText( tr( "Company" ) );
@@ -1027,36 +1090,45 @@ void ContactEditor::loadFields() {
if ( *it == "Profession" )
(*lit)->setText( tr( "Profession" ) );
if ( *it == "Assistant" )
(*lit)->setText( tr( "Assistant" ) );
if ( *it == "Manager" )
(*lit)->setText( tr( "Manager" ) );
if ( *it == "Spouse" )
(*lit)->setText( tr( "Spouse" ) );
- if ( *it == "Birthday" )
- (*lit)->setText( tr( "Birthday" ) );
-
- if ( *it == "Anniversary" )
- (*lit)->setText( tr( "Anniversary" ) );
-
if ( *it == "Nickname" )
(*lit)->setText( tr( "Nickname" ) );
if ( *it == "Children" )
(*lit)->setText( tr( "Children" ) );
}
+ // Set DatePicker
+ qWarning ("**Info: %s", ent.birthday().latin1() );
+ if ( !ent.birthday().isEmpty() ){
+ birthdayButton->setText( ent.birthday() );
+ birthdayPicker->setDate( TimeConversion::fromString ( ent.birthday() ) );
+ } else
+ birthdayButton->setText( tr ("Unknown") );
+
+ qWarning ("**Info: %s", ent.anniversary().latin1() );
+ if ( !ent.anniversary().isEmpty() ){
+ anniversaryButton->setText( ent.anniversary() );
+ anniversaryPicker->setDate( TimeConversion::fromString ( ent.birthday() ) );
+ } else
+ anniversaryButton->setText( tr ("Unknown") );
+
}
void ContactEditor::accept() {
if ( isEmpty() ) {
cleanupFields();
reject();
} else {
saveEntry();
cleanupFields();
QDialog::accept();
}
@@ -1420,30 +1492,24 @@ void ContactEditor::setEntry( const OContact &entry ) {
if ( *it == "Profession" )
(*itLE)->setText( ent.profession() );
if ( *it == "Assistant" )
(*itLE)->setText( ent.assistant() );
if ( *it == "Manager" )
(*itLE)->setText( ent.manager() );
if ( *it == "Spouse" )
(*itLE)->setText( ent.spouse() );
- if ( *it == "Birthday" )
- (*itLE)->setText( ent.birthday() );
-
- if ( *it == "Anniversary" )
- (*itLE)->setText( ent.anniversary() );
-
if ( *it == "Nickname" )
(*itLE)->setText( ent.nickname() );
if ( *it == "Children" )
(*itLE)->setText( ent.children() );
}
QStringList::Iterator itV;
for ( it = slChooserNames.begin(), itV = slChooserValues.begin(); it != slChooserNames.end(); ++it, ++itV ) {
if ( ( *it == "Business Phone") || ( *it == "Work Phone" ) )
@@ -1509,37 +1575,40 @@ void ContactEditor::setEntry( const OContact &entry ) {
if ( *it == "Yahoo IM" )
*itV = ent.yahooIM();
*/
if ( *it == "Home Web Page" )
*itV = ent.homeWebpage();
if ( ( *it == "Business WebPage" ) || ( *it == "Work Web Page" ) )
*itV = ent.businessWebpage();
}
+
cmbCat->setCategories( ent.categories(), "Contacts", tr("Contacts") );
QString gender = ent.gender();
cmbGender->setCurrentItem( gender.toInt() );
txtNote->setText( ent.notes() );
slotCmbChooser1Change( cmbChooserField1->currentItem() );
slotCmbChooser2Change( cmbChooserField2->currentItem() );
slotCmbChooser3Change( cmbChooserField3->currentItem() );
slotAddressTypeChange( cmbAddress->currentItem() );
+ loadFields();
+
}
void ContactEditor::saveEntry() {
if ( useFullName == TRUE ) {
txtFirstName->setText( parseName( txtFullName->text(), NAME_F ) );
txtMiddleName->setText( parseName( txtFullName->text(), NAME_M ) );
txtLastName->setText( parseName( txtFullName->text(), NAME_L ) );
txtSuffix->setText( parseName( txtFullName->text(), NAME_S ) );
useFullName = FALSE;
}
@@ -1618,30 +1687,24 @@ void ContactEditor::saveEntry() {
if ( *it == "Profession" )
ent.setProfession( (*itLE)->text() );
if ( *it == "Assistant" )
ent.setAssistant( (*itLE)->text() );
if ( *it == "Manager" )
ent.setManager( (*itLE)->text() );
if ( *it == "Spouse" )
ent.setSpouse( (*itLE)->text() );
- if ( *it == "Birthday" )
- ent.setBirthday( (*itLE)->text() );
-
- if ( *it == "Anniversary" )
- ent.setAnniversary( (*itLE)->text() );
-
if ( *it == "Nickname" )
ent.setNickname( (*itLE)->text() );
if ( *it == "Children" )
ent.setChildren( (*itLE)->text() );
}
QStringList::ConstIterator itV;
for ( it = slChooserNames.begin(), itV = slChooserValues.begin(); it != slChooserNames.end(); ++it, ++itV ) {
if ( ( *it == "Business Phone" ) || ( *it == "Work Phone" ) )
@@ -1797,12 +1860,42 @@ static inline bool containsAlphaNum( const QString &str )
}
static inline bool constainsWhiteSpace( const QString &str )
{
int i,
count = str.length();
for (i = 0; i < count; i++ )
if ( str[i].isSpace() )
return TRUE;
return FALSE;
}
+void ContactEditor::setPersonalView( bool personal )
+{
+ m_personalView = personal;
+ if ( personal ){
+ cmbCat->hide();
+ labCat->hide();
+ } else{
+ cmbCat->show();
+ labCat->show();
+
+ }
+}
+
+void ContactEditor::slotAnniversaryDateChanged( int year, int month, int day)
+{
+ QDate date;
+ date.setYMD( year, month, day );
+ QString dateString = TimeString::numberDateString( date );
+ anniversaryButton->setText( dateString );
+ ent.setAnniversary ( dateString );
+}
+
+void ContactEditor::slotBirthdayDateChanged( int year, int month, int day)
+{
+ QDate date;
+ date.setYMD( year, month, day );
+ QString dateString = TimeString::numberDateString( date );
+ birthdayButton->setText( dateString );
+ ent.setBirthday ( dateString );
+}
diff --git a/core/pim/addressbook/contacteditor.h b/core/pim/addressbook/contacteditor.h
index 8ed8553..40ce864 100644
--- a/core/pim/addressbook/contacteditor.h
+++ b/core/pim/addressbook/contacteditor.h
@@ -14,24 +14,26 @@
*
* This is a rewrite of the abeditor.h file, modified to provide a more
* intuitive interface to TrollTech's original Address Book editor. This
* is made to operate exactly in interface with the exception of name.
*
*/
#ifndef CONTACTEDITOR_H
#define CONTACTEDITOR_H
#include <opie/ocontact.h>
+#include <qpe/datebookmonth.h>
+
#include <qdialog.h>
#include <qlist.h>
#include <qmap.h>
#include <qstringlist.h>
const int NAME_LF = 0;
const int NAME_LFM = 1;
const int NAME_FL = 2;
const int NAME_FMLS = 3;
const int NAME_F = 4;
const int NAME_M = 5;
@@ -52,75 +54,79 @@ class ContactEditor : public QDialog {
Q_OBJECT
public:
ContactEditor( const OContact &entry,
const QValueList<int> *newOrderedValues,
QStringList *slNewOrdered,
QWidget *parent = 0,
const char *name = 0,
WFlags fl = 0 );
~ContactEditor();
void loadFields();
void setNameFocus();
+ void setPersonalView( bool personal = true );
OContact entry() const { return ent; }
public slots:
void slotNote();
void slotName();
void setEntry(const OContact &entry);
protected slots:
void accept();
private:
void init();
void initMap();
void saveEntry();
bool isEmpty();
void cleanupFields();
QString parseName( QString fullName, int type );
-
private slots:
void slotChooser1Change( const QString &textChanged );
void slotChooser2Change( const QString &textChanged );
void slotChooser3Change( const QString &textChanged );
void slotChooser4Change( const QString &textChanged );
void slotCmbChooser1Change( int index );
void slotCmbChooser2Change( int index );
void slotCmbChooser3Change( int index );
void slotCmbChooser4Change( int index );
void slotAddressTypeChange( int index );
void slotAddressChange( const QString &textChanged );
void slotAddress2Change( const QString &textChanged );
void slotPOBoxChange( const QString &textChanged );
void slotCityChange( const QString &textChanged );
void slotStateChange( const QString &textChanged );
void slotZipChange( const QString &textChanged );
void slotCountryChange( const QString &textChanged );
void slotFullNameChange( const QString &textChanged );
+ void slotAnniversaryDateChanged( int year, int month, int day);
+ void slotBirthdayDateChanged( int year, int month, int day);
private:
bool useFullName, hasGender, hasTitle, hasCompany, hasNotes, hasStreet, hasStreet2, hasPOBox, hasCity, hasState, hasZip, hasCountry;
OContact ent;
QDialog *dlgNote;
QDialog *dlgName;
QList<QLineEdit> listValue;
QList<QLabel> listName;
const QValueList<int> *orderedValues;
QStringList slOrdered;
QStringList slDynamicEntries;
+ bool m_personalView;
+
QStringList slHomeAddress;
QStringList slBusinessAddress;
QStringList slChooserNames;
QStringList slChooserValues;
QMultiLineEdit *txtNote;
QLabel *lblNote;
//QLineEdit *txtTitle;
QLineEdit *txtFirstName;
QLineEdit *txtMiddleName;
QLineEdit *txtLastName;
@@ -134,29 +140,33 @@ class ContactEditor : public QDialog {
QLineEdit *txtJobTitle;
QLineEdit *txtOrganization;
QLineEdit *txtChooserField1;
QLineEdit *txtChooserField2;
QLineEdit *txtChooserField3;
QLineEdit *txtChooserField4;
QComboBox *cmbChooserField1;
QComboBox *cmbChooserField2;
QComboBox *cmbChooserField3;
QComboBox *cmbChooserField4;
QComboBox *cmbFileAs;
CategorySelect *cmbCat;
+ QLabel *labCat;
QScrollView *svAddress;
QLineEdit *txtAddress;
//QLineEdit *txtAddress2;
//QLineEdit *txtPOBox;
QLineEdit *txtCity;
QLineEdit *txtState;
QLineEdit *txtZip;
QComboBox *cmbAddress;
QComboBox *cmbCountry;
QScrollView *svDetails;
QComboBox *cmbGender;
-
-};
+ DateBookMonth* birthdayPicker;
+ QToolButton* birthdayButton;
+ DateBookMonth* anniversaryPicker;
+ QToolButton* anniversaryButton;
+ };
#endif