summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (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
@@ -1,193 +1,193 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** OContact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#define QTOPIA_INTERNAL_FD
#include "contacteditor.h"
#include "ablabel.h"
#include "abtable.h"
#include "addresssettings.h"
#include "addressbook.h"
#include <opie/ofileselector.h>
#include <opie/ofiledialog.h>
#include <qpe/qpeapplication.h>
#include <qpe/config.h>
#include <opie/ocontact.h>
#include <qpe/global.h>
#include <qpe/resource.h>
#include <qpe/ir.h>
#include <qpe/qpemessagebox.h>
#include <qpe/qcopenvelope_qws.h>
#include <qaction.h>
#include <qdialog.h>
#include <qdir.h>
#include <qfile.h>
#include <qimage.h>
#include <qlayout.h>
#include <qpe/qpemenubar.h>
#include <qmessagebox.h>
#include <qpixmap.h>
#include <qpopupmenu.h>
#include <qpe/qpetoolbar.h>
#include <qstringlist.h>
#include <qtoolbutton.h>
#include <qwhatsthis.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <qdatetime.h>
#include "picker.h"
#include "configdlg.h"
static QString addressbookPersonalVCardName()
{
QString filename = Global::applicationFileName("addressbook",
"businesscard.vcf");
return filename;
}
AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
WFlags f )
: QMainWindow( parent, name, f ),
abEditor(0),
useRegExp(false),
doNotifyWrapAround(true),
caseSensitive(false),
m_useQtMail(true),
m_useOpieMail(false),
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
QPEToolBar *bar = new QPEToolBar( this );
bar->setHorizontalStretchable( TRUE );
QPEMenuBar *mbList = new QPEMenuBar( bar );
mbList->setMargin( 0 );
QPopupMenu *edit = new QPopupMenu( this );
mbList->insertItem( tr( "Contact" ), edit );
listTools = new QPEToolBar( this, "list operations" );
QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null,
0, this, 0 );
actionNew = a;
connect( a, SIGNAL( activated() ), this, SLOT( slotListNew() ) );
a->addTo( edit );
a->addTo( listTools );
a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ), QString::null,
0, this, 0 );
actionEdit = a;
connect( a, SIGNAL( activated() ), this, SLOT( slotViewEdit() ) );
a->addTo( edit );
a->addTo( listTools );
a = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null,
0, this, 0 );
actionTrash = a;
connect( a, SIGNAL( activated() ), this, SLOT( slotListDelete() ) );
a->addTo( edit );
a->addTo( listTools );
// make it possible to go directly to businesscard via qcop call
#if defined(Q_WS_QWS)
#if !defined(QT_NO_COP)
QCopChannel *addressChannel = new QCopChannel("QPE/Addressbook" , this );
connect (addressChannel, SIGNAL( received(const QCString &, const QByteArray &)),
this, SLOT ( appMessage(const QCString &, const QByteArray &) ) );
#endif
#endif
a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ),
QString::null, 0, this, 0 );
actionFind = a;
connect( a, SIGNAL(activated()), this, SLOT( slotFindOpen()) );
a->addTo( edit );
a->addTo( listTools );
// Much better search widget, taken from QTReader.. (se)
searchBar = new OFloatBar( "Search", this, QMainWindow::Top, TRUE );
searchBar->setHorizontalStretchable( TRUE );
searchBar->hide();
searchEdit = new QLineEdit( searchBar, "searchEdit" );
// QFont f("unifont", 16 /*, QFont::Bold*/);
// searchEdit->setFont( f );
searchBar->setStretchableWidget( searchEdit );
connect( searchEdit, SIGNAL( returnPressed( ) ),
this, SLOT( slotFind( ) ) );
a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( slotFindNext() ) );
a->addTo( searchBar );
a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( slotFindClose() ) );
a->addTo( searchBar );
a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "mail/sendmail" ),
QString::null, 0, this, 0 );
//a->setEnabled( FALSE ); we got support for it now :) zecke
actionMail = a;
connect( a, SIGNAL( activated() ), this, SLOT( writeMail() ) );
a->addTo( edit );
a->addTo( listTools );
if ( Ir::supported() ) {
a = new QAction( tr ("Beam Entry" ), Resource::loadPixmap( "beam" ), QString::null,
0, this, 0 );
actionBeam = a;
connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) );
a->addTo( edit );
@@ -580,213 +580,218 @@ static void parseName( const QString& name, QString *first, QString *middle,
*last = name.left( comma );
comma++;
while ( comma < int(name.length()) && name[comma] == ' ' )
comma++;
rest = name.mid( comma );
} else {
int space = name.findRev( ' ' );
*last = name.mid( space+1 );
rest = name.left( space );
}
int space = rest.find( ' ' );
if ( space <= 0 ) {
*first = rest;
} else {
*first = rest.left( space );
*middle = rest.mid( space+1 );
}
}
void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
{
if (msg == "editPersonal()") {
editPersonal();
} else if (msg == "editPersonalAndClose()") {
editPersonal();
close();
} else if ( msg == "addContact(QString,QString)" ) {
QDataStream stream(data,IO_ReadOnly);
QString name, email;
stream >> name >> email;
OContact cnt;
QString fn, mn, ln;
parseName( name, &fn, &mn, &ln );
// qDebug( " %s - %s - %s", fn.latin1(), mn.latin1(), ln.latin1() );
cnt.setFirstName( fn );
cnt.setMiddleName( mn );
cnt.setLastName( ln );
cnt.insertEmails( email );
cnt.setDefaultEmail( email );
cnt.setFileAs();
if ( bAbEditFirstTime ) {
abEditor = new ContactEditor( cnt, &orderedFields, &slOrderedFields,
this, "editor" );
bAbEditFirstTime = FALSE;
} else {
abEditor->setEntry( cnt );
}
abView()->init( cnt );
editEntry( NewEntry );
}
#if 0
else if (msg == "pickAddresses(QCString,QCString,QStringList,...)" ) {
QDataStream stream(data,IO_ReadOnly);
QCString ch,m;
QStringList types;
stream >> ch >> m >> types;
AddressPicker picker(abList,this,0,TRUE);
picker.showMaximized();
picker.setChoiceNames(types);
int i=0;
for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) {
QStringList sel;
stream >> sel;
picker.setSelection(i++,sel);
}
picker.showMaximized();
picker.exec();
// ###### note: contacts may have been added - save here!
setCentralWidget(abList);
QCopEnvelope e(ch,m);
i=0;
for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) {
QStringList sel = picker.selection(i++);
e << sel;
}
}
#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();
return;
}
// XXX need to disable some QActions.
actionNew->setEnabled(FALSE);
actionTrash->setEnabled(FALSE);
#ifndef MAKE_FOR_SHARP_ROM
actionFind->setEnabled(FALSE);
#endif
actionMail->setEnabled(FALSE);
setCaption( tr("Contacts - My Personal Details") );
QString filename = addressbookPersonalVCardName();
OContact me;
if (QFile::exists(filename))
me = OContact::readVCard( filename )[0];
abView()->init( me );
abView()->sync();
listContainer->hide();
setCentralWidget( abView() );
mView->show();
mView->setFocus();
}
void AddressbookWindow::editEntry( EntryMode entryMode )
{
OContact entry;
if ( bAbEditFirstTime ) {
abEditor = new ContactEditor( entry, &orderedFields, &slOrderedFields,
this, "editor" );
bAbEditFirstTime = FALSE;
if ( entryMode == EditEntry )
abEditor->setEntry( abList->currentEntry() );
}
// other things may chane the caption.
abEditor->setCaption( tr("Edit Address") );
#if defined(Q_WS_QWS) || defined(_WS_QWS_)
abEditor->showMaximized();
#endif
// fix the foxus...
abEditor->setNameFocus();
if ( abEditor->exec() ) {
setFocus();
if ( entryMode == NewEntry ) {
OContact insertEntry = abEditor->entry();
insertEntry.assignUid();
abList->addEntry( insertEntry );
} else {
OContact replaceEntry = abEditor->entry();
if ( !replaceEntry.isValidUid() )
replaceEntry.assignUid();
abList->replaceCurrentEntry( replaceEntry );
}
}
populateCategories();
showList();
}
void AddressbookWindow::listIsEmpty( bool empty )
{
if ( !empty ) {
deleteButton->setEnabled( TRUE );
}
}
void AddressbookWindow::reload()
{
syncing = FALSE;
abList->clear();
abList->reload();
}
void AddressbookWindow::flush()
{
syncing = TRUE;
abList->save();
}
void AddressbookWindow::closeEvent( QCloseEvent *e )
{
if ( centralWidget() == mView ) {
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
@@ -1,112 +1,112 @@
<!DOCTYPE UI><UI>
<class>ConfigDlg_Base</class>
<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">
<name>margin</name>
<number>11</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QTabWidget</class>
<property stdset="1">
<name>name</name>
<cstring>configDlg_base</cstring>
</property>
<property>
<name>layoutMargin</name>
</property>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Widget5</cstring>
</property>
<attribute>
<name>title</name>
<string>Search</string>
</attribute>
<vbox>
<property stdset="1">
<name>margin</name>
<number>5</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QButtonGroup</class>
<property stdset="1">
<name>name</name>
<cstring>ButtonGroup1</cstring>
</property>
<property stdset="1">
<name>title</name>
<string>Query Style</string>
</property>
<vbox>
<property stdset="1">
<name>margin</name>
<number>11</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QRadioButton</class>
<property stdset="1">
<name>name</name>
<cstring>m_useRegExp</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Use Regular Expressions</string>
</property>
</widget>
<widget>
<class>QRadioButton</class>
<property stdset="1">
<name>name</name>
<cstring>m_useWildCard</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Use Wildcards (*,?)</string>
</property>
<property stdset="1">
<name>checked</name>
<bool>true</bool>
</property>
</widget>
</vbox>
</widget>
<widget>
<class>QCheckBox</class>
@@ -236,100 +236,102 @@ is provided free !</string>
<spacer>
<property>
<name>name</name>
<cstring>Spacer2</cstring>
</property>
<property stdset="1">
<name>orientation</name>
<enum>Vertical</enum>
</property>
<property stdset="1">
<name>sizeType</name>
<enum>Expanding</enum>
</property>
<property>
<name>sizeHint</name>
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</vbox>
</widget>
</widget>
<widget>
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Layout1</cstring>
</property>
<hbox>
<property stdset="1">
<name>margin</name>
<number>0</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QPushButton</class>
<property stdset="1">
<name>name</name>
<cstring>buttonOk</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>&amp;OK</string>
</property>
<property stdset="1">
<name>autoDefault</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>default</name>
<bool>true</bool>
</property>
</widget>
<widget>
<class>QPushButton</class>
<property stdset="1">
<name>name</name>
<cstring>buttonCancel</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>&amp;Cancel</string>
</property>
<property stdset="1">
<name>autoDefault</name>
<bool>true</bool>
</property>
</widget>
</hbox>
</widget>
</vbox>
</widget>
<connections>
<connection>
<sender>buttonOk</sender>
<signal>clicked()</signal>
<receiver>Configuration</receiver>
<slot>accept()</slot>
</connection>
<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
@@ -1,305 +1,317 @@
/*
* Copyright (c) 2002 Michael R. Crawford <mike@tuxnami.org>
*
* This file is an add-on for the OPIE Palmtop Environment
*
* This file may be distributed and/or modified under the terms of the
* GNU General Public License version 2 as published by the Free Software
* Foundation and appearing in the file LICENSE.GPL included in the pacakaging
* of this file.
*
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
*
* 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() {
useFullName = TRUE;
int i = 0;
/** SHut up and stop leaking
slHomeAddress = new QStringList;
slBusinessAddress = new QStringList;
slChooserNames = new QStringList;
slChooserValues = new QStringList;
slDynamicEntries = new QStringList;
*/
//*slDynamicEntries = *slOrdered;
QStringList trlChooserNames;
for (i = 0; i <= 6; i++) {
slHomeAddress.append( "" );
slBusinessAddress.append( "" );
}
{
hasGender = FALSE;
hasTitle = FALSE;
hasCompany = FALSE;
hasNotes = FALSE;
hasStreet = FALSE;
hasStreet2 = FALSE;
hasPOBox = FALSE;
hasCity = FALSE;
hasState = FALSE;
hasZip = FALSE;
hasCountry = FALSE;
QStringList::ConstIterator it = slOrdered.begin();
for ( i = 0; it != slOrdered.end(); i++, ++it ) {
if ( (*it) == "Business Fax" ) {
trlChooserNames.append( tr( "Business Fax" ) );
slChooserNames.append( *it );
slChooserValues.append("" );
//slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Home Fax" ) {
trlChooserNames.append( tr( "Home Fax" ) );
slChooserNames.append( *it );
slChooserValues.append("" );
//slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Business Phone" ) {
trlChooserNames.append( tr( "Business Phone" ) );
slChooserNames.append( *it );
slChooserValues.append( "" );
//slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Home Phone" ) {
trlChooserNames.append( tr( "Home Phone" ) );
slChooserNames.append( *it );
slChooserValues.append( "" );
//slDynamicEntries->remove( it );
continue;
}
/*
if ( (*it).right( 2 ) == tr( "IM" ) ) {
slChooserNames.append( *it );
slChooserValues.append( "" );
//slDynamicEntries->remove( it );
continue;
} */
if ( (*it) == "Business Mobile" ) {
trlChooserNames.append( tr( "Business Mobile" ) );
slChooserNames.append( *it );
slChooserValues.append( "" );
//slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Home Mobile" ) {
trlChooserNames.append( tr( "Home Mobile" ) );
slChooserNames.append( *it );
slChooserValues.append( "" );
//slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Business WebPage" ) {
trlChooserNames.append( tr( "Business WebPage" ) );
slChooserNames.append( *it );
slChooserValues.append( "" );
//slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Home Web Page" ) {
trlChooserNames.append( tr( "Home Web Page" ) );
slChooserNames.append( *it );
slChooserValues.append( "" );
//slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Business Pager" ) {
trlChooserNames.append( tr( "Business Pager" ) );
slChooserNames.append( *it );
slChooserValues.append( "" );
//slDynamicEntries->remove( it );
continue;
}
if ( *it == "Default Email" ) {
trlChooserNames.append( tr( "Default Email" ) );
slChooserNames.append( *it );
slChooserValues.append( "" );
//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;
}
if ( *it == "Middle Name" ) {
// slDynamicEntries->remove( it );
continue;
}
if ( *it == "Last Name" ) {
// slDynamicEntries->remove( it );
continue;
}
if ( *it == "Suffix" ) {
// slDynamicEntries->remove( it );
continue;
}
if ( *it == "File As" ) {
// slDynamicEntries->remove( it );
continue;
}
if ( *it == "Gender" ) {
hasGender = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( *it == "Job Title" ) {
hasTitle = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( ( *it == "Company") || (*it == "Organization" ) ) {
hasCompany = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( *it == "Notes" ) {
hasNotes = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( *it == "Groups" ) {
// slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Business Street" ) {
hasStreet = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Home Street" ) {
hasStreet = TRUE;
// slDynamicEntries->remove( it );
continue;
}
/*
if ( (*it).right( 8 ) == tr( "Street 2" ) ) {
hasStreet2 = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( (*it).right( 8 ) == tr( "P.O. Box" ) ) {
hasPOBox = TRUE;
// slDynamicEntries->remove( it );
continue;
} */
if ( (*it) == "Business City" ) {
hasCity = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Business State" ) {
hasState = TRUE;
// slDynamicEntries->remove( it );
continue;
}
@@ -309,197 +321,207 @@ void ContactEditor::init() {
// slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Business Country" ) {
hasCountry = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Home City" ) {
hasCity = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Home State" ) {
hasState = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Home Zip" ) {
hasZip = TRUE;
// slDynamicEntries->remove( it );
continue;
}
if ( (*it) == "Home Country" ) {
hasCountry = TRUE;
// slDynamicEntries->remove( it );
continue;
}
slDynamicEntries.append( *it );
}
}
QVBoxLayout *vb = new QVBoxLayout( this );
tabMain = new QTabWidget( this );
vb->addWidget( tabMain );
QWidget *tabViewport = new QWidget ( tabMain );
vb = new QVBoxLayout( tabViewport );
svGeneral = new QScrollView( tabViewport );
vb->addWidget( svGeneral, 0, 0 );
svGeneral->setResizePolicy( QScrollView::AutoOneFit );
svGeneral->setFrameStyle( QFrame::NoFrame );
QWidget *container = new QWidget( svGeneral->viewport() );
svGeneral->addChild( container );
QGridLayout *gl = new QGridLayout( container, 1, 1, 2, 4 );
gl->setResizeMode( QLayout::FreeResize );
btnFullName = new QPushButton( tr( "Full Name..." ), container );
gl->addWidget( btnFullName, 0, 0 );
txtFullName = new QLineEdit( container );
gl->addWidget( txtFullName, 0, 1 );
QLabel *l = new QLabel( tr( "Job Title" ), container );
gl->addWidget( l, 1, 0 );
txtJobTitle = new QLineEdit( container );
gl->addWidget( txtJobTitle, 1, 1 );
l = new QLabel( tr( "Organization" ), container );
gl->addWidget( l, 2, 0 );
txtOrganization = new QLineEdit( container );
gl->addWidget( txtOrganization, 2, 1 );
cmbChooserField1 = new QComboBox( FALSE, container );
cmbChooserField1->setMaximumWidth( 90 );
gl->addWidget( cmbChooserField1, 3, 0 );
txtChooserField1 = new QLineEdit( container );
gl->addWidget( txtChooserField1, 3, 1 );
cmbChooserField2 = new QComboBox( FALSE, container );
cmbChooserField2->setMaximumWidth( 90 );
gl->addWidget( cmbChooserField2, 4, 0 );
txtChooserField2 = new QLineEdit( container );
gl->addWidget( txtChooserField2, 4, 1 );
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 );
svAddress->setFrameStyle( QFrame::NoFrame );
container = new QWidget( svAddress->viewport() );
svAddress->addChild( container );
gl = new QGridLayout( container, 8, 3, 2, 4 ); // row 7 QSpacerItem
cmbAddress = new QComboBox( FALSE, container );
cmbAddress->insertItem( tr( "Business" ) );
cmbAddress->insertItem( tr( "Home" ) );
gl->addMultiCellWidget( cmbAddress, 0, 0, 0, 1 );
l = new QLabel( tr( "Address" ), container );
gl->addWidget( l, 1, 0 );
txtAddress = new QLineEdit( container );
gl->addMultiCellWidget( txtAddress, 1, 1, 1, 2 );
/*
l = new QLabel( tr( "Address 2" ), container );
gl->addWidget( l, 2, 0 );
txtAddress2 = new QLineEdit( container );
gl->addMultiCellWidget( txtAddress2, 2, 2, 1, 2 );
l = new QLabel( tr( "P.O. Box" ), container );
gl->addWidget( l, 3, 0 );
txtPOBox = new QLineEdit( container );
gl->addMultiCellWidget( txtPOBox, 3, 3, 1, 2 );
*/
l = new QLabel( tr( "City" ), container );
gl->addWidget( l, 2, 0 );
txtCity = new QLineEdit( container );
gl->addMultiCellWidget( txtCity, 2, 2, 1, 2 );
l = new QLabel( tr( "State" ), container );
gl->addWidget( l, 3, 0 );
txtState = new QLineEdit( container );
gl->addMultiCellWidget( txtState, 3, 3, 1, 2 );
l = new QLabel( tr( "Zip Code" ), container );
gl->addWidget( l, 4, 0 );
txtZip = new QLineEdit( container );
gl->addMultiCellWidget( txtZip, 4, 4, 1, 2 );
l = new QLabel( tr( "Country" ), container );
gl->addWidget( l, 5, 0 );
cmbCountry = new QComboBox( TRUE, container );
cmbCountry->insertItem( tr( "" ) );
cmbCountry->insertItem( tr ( "United States" ) );
cmbCountry->insertItem( tr ( "United Kingdom" ) );
cmbCountry->insertItem( tr ( "Afganistan" ) );
cmbCountry->insertItem( tr ( "Albania" ) );
cmbCountry->insertItem( tr ( "Algeria" ) );
cmbCountry->insertItem( tr ( "American Samoa" ) );
cmbCountry->insertItem( tr ( "Andorra" ) );
cmbCountry->insertItem( tr ( "Angola" ) );
cmbCountry->insertItem( tr ( "Anguilla" ) );
cmbCountry->insertItem( tr ( "Antartica" ) );
cmbCountry->insertItem( tr ( "Argentina" ) );
cmbCountry->insertItem( tr ( "Armania" ) );
cmbCountry->insertItem( tr ( "Aruba" ) );
cmbCountry->insertItem( tr ( "Australia" ) );
cmbCountry->insertItem( tr ( "Austria" ) );
cmbCountry->insertItem( tr ( "Azerbaijan" ) );
cmbCountry->insertItem( tr ( "Bahamas" ) );
cmbCountry->insertItem( tr ( "Bahrain" ) );
cmbCountry->insertItem( tr ( "Bangladesh" ) );
cmbCountry->insertItem( tr ( "Barbados" ) );
cmbCountry->insertItem( tr ( "Belarus" ) );
cmbCountry->insertItem( tr ( "Belgium" ) );
cmbCountry->insertItem( tr ( "Belize" ) );
cmbCountry->insertItem( tr ( "Benin" ) );
cmbCountry->insertItem( tr ( "Bermuda" ) );
cmbCountry->insertItem( tr ( "Bhutan" ) );
cmbCountry->insertItem( tr ( "Boliva" ) );
cmbCountry->insertItem( tr ( "Botswana" ) );
cmbCountry->insertItem( tr ( "Bouvet Island" ) );
cmbCountry->insertItem( tr ( "Brazil" ) );
cmbCountry->insertItem( tr ( "Brunei Darussalam" ) );
cmbCountry->insertItem( tr ( "Bulgaria" ) );
cmbCountry->insertItem( tr ( "Burkina Faso" ) );
cmbCountry->insertItem( tr ( "Burundi" ) );
cmbCountry->insertItem( tr ( "Cambodia" ) );
cmbCountry->insertItem( tr ( "Camaroon" ) );
cmbCountry->insertItem( tr ( "Canada" ) );
cmbCountry->insertItem( tr ( "Cape Verde" ) );
@@ -614,212 +636,252 @@ void ContactEditor::init() {
cmbCountry->insertItem( tr ( "Norway" ) );
cmbCountry->insertItem( tr ( "Oman" ) );
cmbCountry->insertItem( tr ( "Pakistan" ) );
cmbCountry->insertItem( tr ( "Palau" ) );
cmbCountry->insertItem( tr ( "Palestinian Territory" ) );
cmbCountry->insertItem( tr ( "Panama" ) );
cmbCountry->insertItem( tr ( "Papua New Guinea" ) );
cmbCountry->insertItem( tr ( "Paraguay" ) );
cmbCountry->insertItem( tr ( "Peru" ) );
cmbCountry->insertItem( tr ( "Philippines" ) );
cmbCountry->insertItem( tr ( "Pitcairn" ) );
cmbCountry->insertItem( tr ( "Poland" ) );
cmbCountry->insertItem( tr ( "Portugal" ) );
cmbCountry->insertItem( tr ( "Puerto Rico" ) );
cmbCountry->insertItem( tr ( "Qatar" ) );
cmbCountry->insertItem( tr ( "Reunion" ) );
cmbCountry->insertItem( tr ( "Romania" ) );
cmbCountry->insertItem( tr ( "Russia" ) );
cmbCountry->insertItem( tr ( "Rwanda" ) );
cmbCountry->insertItem( tr ( "Saint Lucia" ) );
cmbCountry->insertItem( tr ( "Samoa" ) );
cmbCountry->insertItem( tr ( "San Marino" ) );
cmbCountry->insertItem( tr ( "Saudi Arabia" ) );
cmbCountry->insertItem( tr ( "Senegal" ) );
cmbCountry->insertItem( tr ( "Seychelles" ) );
cmbCountry->insertItem( tr ( "Sierra Leone" ) );
cmbCountry->insertItem( tr ( "Singapore" ) );
cmbCountry->insertItem( tr ( "Slovakia" ) );
cmbCountry->insertItem( tr ( "Slovenia" ) );
cmbCountry->insertItem( tr ( "Solomon Islands" ) );
cmbCountry->insertItem( tr ( "Somalia" ) );
cmbCountry->insertItem( tr ( "South Africa" ) );
cmbCountry->insertItem( tr ( "Spain" ) );
cmbCountry->insertItem( tr ( "Sri Lanka" ) );
cmbCountry->insertItem( tr ( "St. Helena" ) );
cmbCountry->insertItem( tr ( "Sudan" ) );
cmbCountry->insertItem( tr ( "Suriname" ) );
cmbCountry->insertItem( tr ( "Swaziland" ) );
cmbCountry->insertItem( tr ( "Sweden" ) );
cmbCountry->insertItem( tr ( "Switzerland" ) );
cmbCountry->insertItem( tr ( "Taiwan" ) );
cmbCountry->insertItem( tr ( "Tajikistan" ) );
cmbCountry->insertItem( tr ( "Tanzania" ) );
cmbCountry->insertItem( tr ( "Thailand" ) );
cmbCountry->insertItem( tr ( "Togo" ) );
cmbCountry->insertItem( tr ( "Tokelau" ) );
cmbCountry->insertItem( tr ( "Tonga" ) );
cmbCountry->insertItem( tr ( "Tunisia" ) );
cmbCountry->insertItem( tr ( "Turkey" ) );
cmbCountry->insertItem( tr ( "Turkmenistan" ) );
cmbCountry->insertItem( tr ( "Tuvalu" ) );
cmbCountry->insertItem( tr ( "Uganda" ) );
cmbCountry->insertItem( tr ( "Ukraine" ) );
cmbCountry->insertItem( tr ( "Uruguay" ) );
cmbCountry->insertItem( tr ( "Uzbekistan" ) );
cmbCountry->insertItem( tr ( "Vanuatu" ) );
cmbCountry->insertItem( tr ( "Venezuela" ) );
cmbCountry->insertItem( tr ( "Viet Nam" ) );
cmbCountry->insertItem( tr ( "Virgin Islands" ) );
cmbCountry->insertItem( tr ( "Western Sahara" ) );
cmbCountry->insertItem( tr ( "Yemen" ) );
cmbCountry->insertItem( tr ( "Yugoslavia" ) );
cmbCountry->insertItem( tr ( "Zambia" ) );
cmbCountry->insertItem( tr ( "Zimbabwe" ) );
cmbCountry->setMaximumWidth( 135 );
gl->addMultiCellWidget( cmbCountry, 5, 5, 1, 2 );
cmbChooserField4 = new QComboBox( FALSE, container );
cmbChooserField4->setMaximumWidth( 90 );
gl->addWidget( cmbChooserField4, 6, 0 );
txtChooserField4 = new QLineEdit( container );
gl->addMultiCellWidget( txtChooserField4, 6, 6, 1, 2 );
QSpacerItem *space = new QSpacerItem(1,1,
QSizePolicy::Maximum,
QSizePolicy::MinimumExpanding );
gl->addItem( space, 7, 0 );
tabMain->insertTab( tabViewport, tr( "Address" ) );
tabViewport = new QWidget ( tabMain );
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") );
gl = new QGridLayout( dlgName, 5, 2, 2, 3 );
l = new QLabel( tr("First Name"), dlgName );
gl->addWidget( l, 0, 0 );
txtFirstName = new QLineEdit( dlgName );
gl->addWidget( txtFirstName, 0, 1 );
l = new QLabel( tr("Middle Name"), dlgName );
gl->addWidget( l, 1, 0 );
txtMiddleName = new QLineEdit( dlgName );
gl->addWidget( txtMiddleName, 1, 1 );
l = new QLabel( tr("Last Name"), dlgName );
gl->addWidget( l, 2, 0 );
txtLastName = new QLineEdit( dlgName );
gl->addWidget( txtLastName, 2, 1 );
l = new QLabel( tr("Suffix"), dlgName );
gl->addWidget( l, 3, 0 );
txtSuffix = new QLineEdit( dlgName );
gl->addWidget( txtSuffix, 3, 1 );
space = new QSpacerItem(1,1,
QSizePolicy::Maximum,
QSizePolicy::MinimumExpanding );
gl->addItem( space, 4, 0 );
cmbChooserField1->insertStringList( trlChooserNames );
cmbChooserField2->insertStringList( trlChooserNames );
cmbChooserField3->insertStringList( trlChooserNames );
cmbChooserField4->insertStringList( trlChooserNames );
cmbChooserField1->setCurrentItem( 0 );
cmbChooserField2->setCurrentItem( 1 );
cmbChooserField3->setCurrentItem( 2 );
connect( btnFullName, SIGNAL(clicked()), this, SLOT(slotName()) );
connect( txtFullName, SIGNAL(textChanged(const QString &)), this, SLOT(slotFullNameChange(const QString &)) );
connect( txtChooserField1, SIGNAL(textChanged(const QString &)),
this, SLOT(slotChooser1Change(const QString &)) );
connect( txtChooserField2, SIGNAL(textChanged(const QString &)),
this, SLOT(slotChooser2Change(const QString &)) );
connect( txtChooserField3, SIGNAL(textChanged(const QString &)),
this, SLOT(slotChooser3Change(const QString &)) );
connect( txtChooserField4, SIGNAL(textChanged(const QString &)),
this, SLOT(slotChooser4Change(const QString &)) );
connect( txtAddress, SIGNAL(textChanged(const QString &)),
this, SLOT(slotAddressChange(const QString &)) );
//connect( txtAddress2, SIGNAL(textChanged(const QString &)), this, SLOT(slotAddress2Change(const QString &)) );
//connect( txtPOBox, SIGNAL(textChanged(const QString &)), this, SLOT(slotPOBoxChange(const QString &)) );
connect( txtCity, SIGNAL(textChanged(const QString &)),
this, SLOT(slotCityChange(const QString &)) );
connect( txtState, SIGNAL(textChanged(const QString &)),
this, SLOT(slotStateChange(const QString &)) );
connect( txtZip, SIGNAL(textChanged(const QString &)),
this, SLOT(slotZipChange(const QString &)) );
connect( cmbCountry, SIGNAL(textChanged(const QString &)),
this, SLOT(slotCountryChange(const QString &)) );
connect( cmbCountry, SIGNAL(activated(const QString &)),
this, SLOT(slotCountryChange(const QString &)) );
connect( cmbChooserField1, SIGNAL(activated(int)),
this, SLOT(slotCmbChooser1Change(int)) );
connect( cmbChooserField2, SIGNAL(activated(int)),
this, SLOT(slotCmbChooser2Change(int)) );
connect( cmbChooserField3, SIGNAL(activated(int)),
this, SLOT(slotCmbChooser3Change(int)) );
connect( cmbChooserField4, SIGNAL(activated(int)),
this, SLOT(slotCmbChooser4Change(int)) );
connect( cmbAddress, SIGNAL(activated(int)),
this, SLOT(slotAddressTypeChange(int)) );
new QPEDialogListener(this);
}
void ContactEditor::initMap()
{
/*
// since the fields and the XML fields exist, create a map
// between them...
Config cfg1( "AddressBook" );
Config cfg2( "AddressBook" );
QString strCfg1,
strCfg2;
@@ -916,231 +978,241 @@ void ContactEditor::slotStateChange( const QString &textChanged ) {
if ( cmbAddress->currentItem() == 0 ) {
slBusinessAddress[4] = textChanged;
} else {
slHomeAddress[4] = textChanged;
}
}
void ContactEditor::slotZipChange( const QString &textChanged ) {
if ( cmbAddress->currentItem() == 0 ) {
slBusinessAddress[5] = textChanged;
} else {
slHomeAddress[5] = textChanged;
}
}
void ContactEditor::slotCountryChange( const QString &textChanged ) {
if ( cmbAddress->currentItem() == 0 ) {
slBusinessAddress[6] = textChanged;
} else {
slHomeAddress[6] = textChanged;
}
}
void ContactEditor::slotCmbChooser1Change( int index ) {
txtChooserField1->setText( slChooserValues[index] );
txtChooserField1->setFocus();
}
void ContactEditor::slotCmbChooser2Change( int index ) {
txtChooserField2->setText( slChooserValues[index] );
txtChooserField2->setFocus();
}
void ContactEditor::slotCmbChooser3Change( int index ) {
txtChooserField3->setText( slChooserValues[index] );
txtChooserField3->setFocus();
}
void ContactEditor::slotCmbChooser4Change( int index ) {
txtChooserField4->setText( slChooserValues[index] );
txtChooserField4->setFocus();
}
void ContactEditor::slotAddressTypeChange( int index ) {
if ( index == 0 ) {
txtAddress->setText( slBusinessAddress[0] );
//txtAddress2->setText( (*slBusinessAddress)[1] );
//txtPOBox->setText( (*slBusinessAddress)[2] );
txtCity->setText( slBusinessAddress[3] );
txtState->setText( slBusinessAddress[4] );
txtZip->setText( slBusinessAddress[5] );
QLineEdit *txtTmp = cmbCountry->lineEdit();
txtTmp->setText( slBusinessAddress[6] );
} else {
txtAddress->setText( slHomeAddress[0] );
//txtAddress2->setText( (*slHomeAddress)[1] );
//txtPOBox->setText( (*slHomeAddress)[2] );
txtCity->setText( slHomeAddress[3] );
txtState->setText( slHomeAddress[4] );
txtZip->setText( slHomeAddress[5] );
QLineEdit *txtTmp = cmbCountry->lineEdit();
txtTmp->setText( slHomeAddress[6] );
}
}
void ContactEditor::slotFullNameChange( const QString &textChanged ) {
int index = cmbFileAs->currentItem();
cmbFileAs->clear();
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" ) );
if ( *it == "Office" )
(*lit)->setText( tr( "Office" ) );
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();
}
}
void ContactEditor::slotNote() {
dlgNote->showMaximized();
if ( !dlgNote->exec() ) {
txtNote->setText( ent.notes() );
}
}
void ContactEditor::slotName() {
QString tmpName;
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) );
}
dlgName->showMaximized();
if ( dlgName->exec() ) {
tmpName = txtFirstName->text() + " " + txtMiddleName->text() + " " + txtLastName->text() + " " + txtSuffix->text();
txtFullName->setText( tmpName.simplifyWhiteSpace() );
slotFullNameChange( txtFullName->text() );
useFullName = FALSE;
}
}
void ContactEditor::setNameFocus() {
txtFullName->setFocus();
}
bool ContactEditor::isEmpty() {
// Test and see if the record should be saved.
// More strict than the original qtopia, needs name or fileas to save
QString t = txtFullName->text();
if ( !t.isEmpty() && containsAlphaNum( t ) )
return false;
t = cmbFileAs->currentText();
if ( !t.isEmpty() && containsAlphaNum( t ) )
return false;
return true;
}
QString ContactEditor::parseName( const QString fullName, int type ) {
QString simplifiedName( fullName.simplifyWhiteSpace() );
QString strFirstName;
QString strMiddleName;
QString strLastName;
QString strSuffix;
QString strTitle;
int commapos;
int spCount;
int spPos;
int spPos2;
commapos = simplifiedName.find( ',', 0, TRUE);
spCount = simplifiedName.contains( ' ', TRUE );
if ( commapos == -1 ) {
switch (spCount) {
case 0:
//return simplifiedName;
if (txtLastName->text() != "") {
strLastName = simplifiedName;
break;
}
if (txtMiddleName->text() != "") {
strMiddleName = simplifiedName;
break;
}
if (txtSuffix->text() != "") {
@@ -1336,473 +1408,494 @@ void ContactEditor::cleanupFields() {
QLineEdit *txtTmp = cmbCountry->lineEdit();
txtTmp->setText("");
txtTmp = cmbFileAs->lineEdit();
txtTmp->setText("");
}
void ContactEditor::setEntry( const OContact &entry ) {
cleanupFields();
ent = entry;
useFullName = FALSE;
txtFirstName->setText( ent.firstName() );
txtMiddleName->setText( ent.middleName() );
txtLastName->setText( ent.lastName() );
txtSuffix->setText( ent.suffix() );
QString *tmpString = new QString;
*tmpString = ent.firstName() + " " + ent.middleName() +
+ " " + ent.lastName() + " " + ent.suffix();
txtFullName->setText( tmpString->simplifyWhiteSpace() );
cmbFileAs->setEditText( ent.fileAs() );
if (hasTitle)
txtJobTitle->setText( ent.jobTitle() );
if (hasCompany)
txtOrganization->setText( ent.company() );
if (hasNotes)
txtNote->setText( ent.notes() );
if (hasStreet) {
slHomeAddress[0] = ent.homeStreet();
slBusinessAddress[0] = ent.businessStreet();
}
/*
if (hasStreet2) {
(*slHomeAddress)[1] = ent.homeStreet2();
(*slBusinessAddress)[1] = ent.businessStreet2();
}
if (hasPOBox) {
(*slHomeAddress)[2] = ent.homePOBox();
(*slBusinessAddress)[2] = ent.businessPOBox();
}
*/
if (hasCity) {
slHomeAddress[3] = ent.homeCity();
slBusinessAddress[3] = ent.businessCity();
}
if (hasState) {
slHomeAddress[4] = ent.homeState();
slBusinessAddress[4] = ent.businessState();
}
if (hasZip) {
slHomeAddress[5] = ent.homeZip();
slBusinessAddress[5] = ent.businessZip();
}
if (hasCountry) {
slHomeAddress[6] = ent.homeCountry();
slBusinessAddress[6] = ent.businessCountry();
}
QStringList::ConstIterator it;
QListIterator<QLineEdit> itLE( listValue );
for ( it = slDynamicEntries.begin(); it != slDynamicEntries.end(); ++it, ++itLE) {
if ( *it == "Department" )
(*itLE)->setText( ent.department() );
if ( *it == "Company" )
(*itLE)->setText( ent.company() );
if ( *it == "Office" )
(*itLE)->setText( ent.office() );
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" ) )
*itV = ent.businessPhone();
/*
if ( *it == "Business 2 Phone" )
*itV = ent.business2Phone();
*/
if ( ( *it == "Business Fax") || ( *it == "Work Fax" ) )
*itV = ent.businessFax();
if ( ( *it == "Business Mobile" ) || ( *it == "work Mobile" ) )
*itV = ent.businessMobile();
/*
if ( *it == "Company Phone" )
*itV = ent.companyPhone();
*/
if ( *it == "Default Email" )
*itV = ent.defaultEmail();
if ( *it == "Emails" )
*itV = ent.emailList().join(", "); // :SX
if ( *it == "Home Phone" )
*itV = ent.homePhone();
/*
if ( *it == "Home 2 Phone" )
*itV = ent.home2Phone();
*/
if ( *it == "Home Fax" )
*itV = ent.homeFax();
if ( *it == "Home Mobile" )
*itV = ent.homeMobile();
/*
if ( *it == "Car Phone" )
*itV = ent.carPhone();
if ( *it == "ISDN Phone" )
*itV = ent.ISDNPhone();
if ( *it == "Other Phone" )
*itV = ent.otherPhone();
*/
if ( ( *it == "Business Pager" ) || ( *it == "Work Pager" ) )
*itV = ent.businessPager();
/*
if ( *it == "Home Pager")
*itV = ent.homePager();
if ( *it == "AIM IM" )
*itV = ent.AIMIM();
if ( *it == "ICQ IM" )
*itV = ent.ICQIM();
if ( *it == "Jabber IM" )
*itV = ent.jabberIM();
if ( *it == "MSN IM" )
*itV = ent.MSNIM();
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;
}
/*if ( ent.firstName() != txtFirstName->text() ||
ent.lastName != txtLastName->text() ||
ent.middleName != txtMiddleName->text() ) {
*/
ent.setFirstName( txtFirstName->text() );
ent.setLastName( txtLastName->text() );
ent.setMiddleName( txtMiddleName->text() );
ent.setSuffix( txtSuffix->text() );
//}
ent.setFileAs( cmbFileAs->currentText() );
ent.setCategories( cmbCat->currentCategories() );
if (hasTitle)
ent.setJobTitle( txtJobTitle->text() );
if (hasCompany)
ent.setCompany( txtOrganization->text() );
if (hasNotes)
ent.setNotes( txtNote->text() );
if (hasStreet) {
ent.setHomeStreet( slHomeAddress[0] );
ent.setBusinessStreet( slBusinessAddress[0] );
}
/*
if (hasStreet2) {
ent.setHomeStreet2( (*slHomeAddress)[1] );
ent.setBusinessStreet2( (*slBusinessAddress)[1] );
}
if (hasPOBox) {
ent.setHomePOBox( (*slHomeAddress)[2] );
ent.setBusinessPOBox( (*slBusinessAddress)[2] );
}
*/
if (hasCity) {
ent.setHomeCity( slHomeAddress[3] );
ent.setBusinessCity( slBusinessAddress[3] );
}
if (hasState) {
ent.setHomeState( slHomeAddress[4] );
ent.setBusinessState( slBusinessAddress[4] );
}
if (hasZip) {
ent.setHomeZip( slHomeAddress[5] );
ent.setBusinessZip( slBusinessAddress[5] );
}
if (hasCountry) {
ent.setHomeCountry( slHomeAddress[6] );
ent.setBusinessCountry( slBusinessAddress[6] );
}
QStringList::ConstIterator it;
QListIterator<QLineEdit> itLE( listValue );
for ( it = slDynamicEntries.begin(); it != slDynamicEntries.end(); ++it, ++itLE) {
if ( *it == "Department" )
ent.setDepartment( (*itLE)->text() );
if ( *it == "Company" )
ent.setCompany( (*itLE)->text() );
if ( *it == "Office" )
ent.setOffice( (*itLE)->text() );
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" ) )
ent.setBusinessPhone( *itV );
/*
if ( *it == tr("Business 2 Phone" )
ent.setBusiness2Phone( *itV );
*/
if ( ( *it == "Business Fax" ) || ( *it == "Work Fax" ) )
ent.setBusinessFax( *itV );
if ( ( *it == "Business Mobile" ) || ( *it == "Work Mobile" ) )
ent.setBusinessMobile( *itV );
/*
if ( *it == "Company Phone" )
ent.setCompanyPhone( *itV );
*/
//if ( *it == "Default Email" )
//ent.setDefaultEmail( *itV );
if ( *it == "Emails" ){
QString allemail;
QString defaultmail;
parseEmailFrom( *itV, defaultmail, allemail );
// ent.clearEmails();
ent.setDefaultEmail( defaultmail );
ent.setEmails( allemail );
}
if ( *it == "Home Phone" )
ent.setHomePhone( *itV );
/*
if ( *it == "Home 2 Phone" )
ent.setHome2Phone( *itV );
*/
if ( *it == "Home Fax" )
ent.setHomeFax( *itV );
if ( *it == "Home Mobile" )
ent.setHomeMobile( *itV );
/*
if ( *it == "Car Phone" )
ent.setCarPhone( *itV );
if ( *it == "ISDN Phone" )
ent.setISDNPhone( *itV );
if ( *it == "Other Phone" )
ent.setOtherPhone( *itV );
*/
if ( ( *it == "Business Pager" ) || ( *it == "Work Pager" ) )
ent.setBusinessPager( *itV );
/*
if ( *it == "Home Pager" )
ent.setHomePager( *itV );
if ( *it == "AIM IM" )
ent.setAIMIM( *itV );
if ( *it == "ICQ IM" )
ent.setICQIM( *itV );
if ( *it == "Jabber IM" )
ent.setJabberIM( *itV );
if ( *it == "MSN IM" )
ent.setMSNIM( *itV );
if ( *it == "Yahoo IM" )
ent.setYahooIM( *itV );
*/
if ( *it == "Home Web Page" )
ent.setHomeWebpage( *itV );
if ( ( *it == "Business WebPage" ) || ( *it == "Work Web Page" ) )
ent.setBusinessWebpage( *itV );
}
int gender = cmbGender->currentItem();
ent.setGender( QString::number( gender ) );
QString str = txtNote->text();
if ( !str.isNull() )
ent.setNotes( str );
}
void parseEmailFrom( const QString &txt, QString &strDefaultEmail,
QString &strAll )
{
int where,
start;
if ( txt.isEmpty() )
return;
// find the first
where = txt.find( ',' );
if ( where < 0 ) {
strDefaultEmail = txt;
strAll = txt;
} else {
strDefaultEmail = txt.left( where ).stripWhiteSpace();
strAll = strDefaultEmail;
while ( where > -1 ) {
strAll.append(" ");
start = where;
where = txt.find( ',', where + 1 );
if ( where > - 1 )
strAll.append( txt.mid(start + 1, where - start - 1).stripWhiteSpace() );
else // grab until the end...
strAll.append( txt.right(txt.length() - start - 1).stripWhiteSpace() );
}
}
}
void parseEmailTo( const QString &strDefaultEmail,
const QString &strOtherEmail, QString &strBack )
{
// create a comma dilimeted set of emails...
// use the power of short circuiting...
bool foundDefault = false;
QString strTmp;
int start = 0;
int where;
// start at the beginng.
strBack = strDefaultEmail;
where = 0;
while ( where > -1 ) {
start = where;
where = strOtherEmail.find( ' ', where + 1 );
if ( where > 0 ) {
strTmp = strOtherEmail.mid( start, where - start ).stripWhiteSpace();
} else
strTmp = strOtherEmail.right( strOtherEmail.length() - start ).stripWhiteSpace();
if ( foundDefault || strTmp != strDefaultEmail ) {
strBack.append( ", " );
strBack.append( strTmp );
} else
foundDefault = true;
}
}
static inline bool containsAlphaNum( const QString &str )
{
int i,
count = str.length();
for ( i = 0; i < count; i++ )
if ( !str[i].isSpace() )
return TRUE;
return FALSE;
}
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
@@ -1,162 +1,172 @@
/*
* Copyright (c) 2002 Michael R. Crawford <mike@tuxnami.org>
*
* This file is an add-on for the OPIE Palmtop Environment
*
* This file may be distributed and/or modified under the terms of the
* GNU General Public License version 2 as published by the Free Software
* Foundation and appearing in the file LICENSE.GPL included in the pacakaging
* of this file.
*
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
*
* 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;
const int NAME_L = 6;
const int NAME_S = 7;
class QScrollView;
class QTabWidget;
class QMultiLineEdit;
class QLineEdit;
class QComboBox;
class QPushButton;
class CategorySelect;
class QLabel;
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;
QLineEdit *txtSuffix;
QTabWidget *tabMain;
QScrollView *svGeneral;
QPushButton *btnFullName;
QPushButton *btnNote;
QLineEdit *txtFullName;
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