-rw-r--r-- | core/pim/addressbook/abtable.cpp | 4 | ||||
-rw-r--r-- | core/pim/addressbook/abview.cpp | 3 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.pro | 2 | ||||
-rw-r--r-- | core/pim/addressbook/configdlg.cpp | 2 | ||||
-rw-r--r-- | core/pim/addressbook/contacteditor.cpp | 1 | ||||
-rw-r--r-- | core/pim/addressbook/contacteditor.h | 3 |
6 files changed, 6 insertions, 9 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp index 4705c78..70330c7 100644 --- a/core/pim/addressbook/abtable.cpp +++ b/core/pim/addressbook/abtable.cpp @@ -294,386 +294,386 @@ int AbTable::currentEntry_UID() void AbTable::clear() { qWarning( "void AbTable::clear()" ); // contactList.clear(); setPaintingEnabled( FALSE ); for ( int r = 0; r < numRows(); ++r ) { for ( int c = 0; c < numCols(); ++c ) { if ( cellWidget( r, c ) ) clearCellWidget( r, c ); clearCell( r, c ); } } setNumRows( 0 ); setPaintingEnabled( TRUE ); } // Refresh updates column 2 if the contactsettings changed void AbTable::refresh() { qWarning( "void AbTable::refresh() NOT IMPLEMENTED !!" ); #if 0 int rows = numRows(); AbTableItem *abi; ContactItem contactItem; setPaintingEnabled( FALSE ); for ( int r = 0; r < rows; ++r ) { abi = static_cast<AbTableItem*>( item(r, 0) ); contactItem = findContactContact( contactList[abi], r ); static_cast<AbTableItem*>( item(r, 1) )->setItem( contactItem.value, abi->text() ); if ( !contactItem.icon.isNull() ){ static_cast<AbTableItem*>( item(r, 1) )-> setPixmap( contactItem.icon ); }else{ static_cast<AbTableItem*>( item(r, 1) )-> setPixmap( QPixmap() ); } } resort(); setPaintingEnabled( TRUE ); #endif } void AbTable::keyPressEvent( QKeyEvent *e ) { char key = toupper( e->ascii() ); if ( key >= 'A' && key <= 'Z' ) moveTo( key ); // qWarning("Received key .."); switch( e->key() ) { case Qt::Key_Space: case Qt::Key_Return: case Qt::Key_Enter: emit signalSwitch(); break; // case Qt::Key_Up: // qWarning("a"); // emit signalKeyUp(); // break; // case Qt::Key_Down: // qWarning("b"); // emit signalKeyDown(); // break; default: QTable::keyPressEvent( e ); } } void AbTable::moveTo( char c ) { qWarning( "void AbTable::moveTo( char c ) NOT IMPLEMENTED !!" ); #if 0 int rows = numRows(); QString value; AbTableItem *abi; int r; if ( asc ) { r = 0; while ( r < rows-1) { abi = static_cast<AbTableItem*>( item(r, 0) ); QChar first = abi->key()[0]; //### is there a bug in QChar to char comparison??? if ( first.row() || first.cell() >= c ) break; r++; } } else { //### should probably disable reverse sorting instead r = rows - 1; while ( r > 0 ) { abi = static_cast<AbTableItem*>( item(r, 0) ); QChar first = abi->key()[0]; //### is there a bug in QChar to char comparison??? if ( first.row() || first.cell() >= c ) break; r--; } } setCurrentCell( r, currentColumn() ); #endif } #if 0 // Useless.. Nobody uses it .. (se) QString AbTable::findContactName( const OContact &entry ) { // We use the fileAs, then company, defaultEmail QString str; str = entry.fileAs(); if ( str.isEmpty() ) { str = entry.company(); if ( str.isEmpty() ) { str = entry.defaultEmail(); } } return str; } #endif void AbTable::resizeRows() { /* if (numRows()) { for (int i = 0; i < numRows(); i++) { setRowHeight( i, size ); } } updateVisible(); */ } void AbTable::realignTable() { // qWarning( "void AbTable::realignTable()" ); setPaintingEnabled( FALSE ); resizeRows(); fitColumns(); setPaintingEnabled( TRUE ); } #if QT_VERSION <= 230 #ifndef SINGLE_APP void QTable::paintEmptyArea( QPainter *p, int cx, int cy, int cw, int ch ) { // Region of the rect we should draw QRegion reg( QRect( cx, cy, cw, ch ) ); // Subtract the table from it reg = reg.subtract( QRect( QPoint( 0, 0 ), tableSize() ) ); // And draw the rectangles (transformed as needed) QArray<QRect> r = reg.rects(); for (unsigned int i=0; i<r.count(); i++) p->fillRect( r[i], colorGroup().brush( QColorGroup::Base ) ); } #endif #endif // int AbTable::rowHeight( int ) const // { // return 18; // } // int AbTable::rowPos( int row ) const // { // return 18*row; // } // int AbTable::rowAt( int pos ) const // { // return QMIN( pos/18, numRows()-1 ); // } void AbTable::fitColumns() { - // qWarning( "void AbTable::fitColumns()" ); - int contentsWidth = visibleWidth() / 2; // :SX Why too low + qWarning( "void AbTable::fitColumns()" ); + int contentsWidth = visibleWidth() / 2; // Fix to better value // contentsWidth = 130; setPaintingEnabled( FALSE ); if ( columnVisible == false ){ showColumn(0); columnVisible = true; } // qWarning("Width: %d", contentsWidth); setColumnWidth( 0, contentsWidth ); adjustColumn(1); if ( columnWidth(1) < contentsWidth ) setColumnWidth( 1, contentsWidth ); setPaintingEnabled( TRUE ); } void AbTable::show() { // qWarning( "void AbTable::show()" ); realignTable(); QTable::show(); } #if 0 void AbTable::setChoiceNames( const QStringList& list) { choicenames = list; if ( choicenames.isEmpty() ) { // hide pick column setNumCols( 2 ); } else { // show pick column setNumCols( 3 ); setColumnWidth( 2, fontMetrics().width(tr( "Pick" ))+8 ); horizontalHeader()->setLabel( 2, tr( "Pick" )); } fitColumns(); } #endif void AbTable::itemClicked(int,int col) { // qWarning( "AbTable::itemClicked(int, col:%d)", col); if ( col == 2 ) { return; } else { // qWarning ("Emitting signalSwitch()"); emit signalSwitch(); } } #if 0 QStringList AbTable::choiceNames() const { return choicenames; } #endif void AbTable::setChoiceSelection( const QValueList<int>& list ) { intFields = list; } QStringList AbTable::choiceSelection(int /*index*/) const { QStringList r; /* ###### QString selname = choicenames.at(index); for (each row) { OContact *c = contactForRow(row); if ( text(row,2) == selname ) { r.append(c->email); } } */ return r; } void AbTable::updateVisible() { // qWarning("void AbTable::updateVisible()"); int visible, totalRows, row, selectedRow = 0; visible = 0; setPaintingEnabled( FALSE ); realignTable(); totalRows = numRows(); for ( row = 0; row < totalRows; row++ ) { if ( rowHeight(row) == 0 ) { showRow( row ); adjustRow( row ); if ( isSelected( row,0 ) || isSelected( row,1 ) ) selectedRow = row; } visible++; } if ( selectedRow ) setCurrentCell( selectedRow, 0 ); if ( !visible ) setCurrentCell( -1, 0 ); setPaintingEnabled( TRUE ); } void AbTable::setPaintingEnabled( bool e ) { // qWarning("IN void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested ); if ( e ) { if ( countNested > 0 ) --countNested; if ( ! countNested ){ setUpdatesEnabled( true ); enablePainting = true; rowHeightChanged( 0 ); viewport()->update(); } } else { ++countNested; enablePainting = false; setUpdatesEnabled( false ); } // qWarning("OUT void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested ); } void AbTable::viewportPaintEvent( QPaintEvent* e ) { // qWarning(" void AbTable::viewportPaintEvent( QPaintEvent* e ) -> %d", enablePainting); if ( enablePainting ) QTable::viewportPaintEvent( e ); } void AbTable::paintCell(QPainter* p, int row, int col, const QRect& cr, bool ) { const QColorGroup &cg = colorGroup(); p->save(); //qWarning( "Paint row: %d", row ); OContact act_contact = m_viewList[row]; // Paint alternating background bars if ( (row % 2 ) == 0 ) { p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Base ) ); p->setPen( QPen( cg.text() ) ); } else { p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Background ) ); p->setPen( QPen( cg.buttonText() ) ); } QFont f = p->font(); QFontMetrics fm(f); int marg = 2; int x = 0; int y = ( cr.height() - 14 ) / 2; QString nameText = act_contact.fileAs(); switch( col ){ case 0: p->drawText( x + marg,2 + fm.ascent(), nameText ); break; case 1:{ ContactItem contactItem = findContactContact( act_contact, 0 ); QPixmap contactPic = contactItem.icon; /* pixmap( row, col ); */ QString contactText = contactItem.value; if ( !contactPic.isNull() ) { p->drawPixmap( x + marg, y, contactPic ); p->drawText( x + marg + contactPic.width() + 4,2 + fm.ascent(), contactText ); } diff --git a/core/pim/addressbook/abview.cpp b/core/pim/addressbook/abview.cpp index 6cbd556..670cdb0 100644 --- a/core/pim/addressbook/abview.cpp +++ b/core/pim/addressbook/abview.cpp @@ -1,248 +1,249 @@ /********************************************************************** ** Copyright (c) 2002 Stefan Eilers (eilers.stefan@epost.de) ** ** 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. ** ** **********************************************************************/ #include "abview.h" #include <qlayout.h> #include <qpe/global.h> #include <opie/ocontactaccessbackend_vcard.h> #include <assert.h> // Is defined in LibQPE extern QString categoryFileName(); QString addressbookPersonalVCardName() { QString filename = Global::applicationFileName("addressbook", "businesscard.vcf"); return filename; } AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ): QWidget(parent), mCat(0), m_inSearch( false ), m_inPersonal( false ), m_curr_category( -1 ), m_curr_View( TableView ), m_prev_View( TableView ), m_curr_Contact ( 0 ), m_contactdb ( 0l ), m_storedDB ( 0l ), m_viewStack( 0l ), m_abTable( 0l ), m_orderedFields( ordered ) { qWarning("AbView::c'tor"); // Load default database and handle syncing myself.. ! - m_contactdb = new OContactAccess ( "addressbook", 0l, 0l, false ), + m_contactdb = new OContactAccess ( "addressbook", 0l, 0l, false ); + m_contactdb -> setReadAhead( 16 ); // Use ReadAhead-Cache if available mCat.load( categoryFileName() ); // Create Layout and put WidgetStack into it. QVBoxLayout *vb = new QVBoxLayout( this ); m_viewStack = new QWidgetStack( this ); vb->addWidget( m_viewStack ); // Creat TableView QVBox* tableBox = new QVBox( m_viewStack ); m_abTable = new AbTable( m_orderedFields, tableBox, "table" ); m_abTable->setCurrentCell( 0, 0 ); m_abTable->setFocus(); // Add TableView to WidgetStack and raise it m_viewStack -> addWidget( tableBox , TableView ); // Create CardView and add it to WidgetStack QVBox* cardBox = new QVBox( m_viewStack ); m_ablabel = new AbLabel( cardBox, "CardView"); m_viewStack -> addWidget( cardBox , CardView ); // Connect views to me connect ( m_abTable, SIGNAL( signalSwitch( void ) ), this, SLOT( slotSwitch( void ) ) ); connect ( m_ablabel, SIGNAL( signalOkPressed( void ) ), this, SLOT( slotSwitch( void ) ) ); load(); } AbView::~AbView() { m_contactdb -> save(); delete m_contactdb; if ( m_storedDB ){ m_storedDB -> save(); delete m_storedDB; } } void AbView::setView( Views view ) { qWarning("AbView::setView( Views view )"); m_curr_View = view; load(); } void AbView::addEntry( const OContact &newContact ) { qWarning("abview:AddContact"); m_contactdb->add ( newContact ); load(); } void AbView::removeEntry( const int UID ) { qWarning("abview:RemoveContact"); m_contactdb->remove( UID ); load(); } void AbView::replaceEntry( const OContact &contact ) { qWarning("abview:ReplaceContact"); m_contactdb->replace( contact ); load(); } OContact AbView::currentEntry() { OContact currentContact; switch ( (int) m_curr_View ) { case TableView: currentContact = m_abTable -> currentEntry(); break; case CardView: currentContact = m_ablabel -> currentEntry(); break; } m_curr_Contact = currentContact.uid(); return currentContact; } bool AbView::save() { // qWarning("abView:Save data"); return m_contactdb->save(); } void AbView::load() { qWarning("abView:Load data"); // Letter Search is stopped at this place emit signalClearLetterPicker(); if ( m_inPersonal ) // VCard Backend does not sort.. m_list = m_contactdb->allRecords(); else{ m_list = m_contactdb->sorted( true, 0, 0, 0 ); if ( m_curr_category != -1 ) clearForCategory(); } qWarning ("Number of contacts: %d", m_list.count()); updateView( true ); } void AbView::reload() { qWarning( "void AbView::reload()" ); m_contactdb->reload(); load(); } void AbView::clear() { // :SX } void AbView::setShowByCategory( const QString& cat ) { qWarning("AbView::setShowCategory( const QString& cat )"); int intCat = 0; // All (cat == NULL) will be stored as -1 if ( cat.isNull() ) intCat = -1; else intCat = mCat.id("Contacts", cat ); // Just do anything if we really change the category if ( intCat != m_curr_category ){ // qWarning ("Categories: Selected %s.. Number: %d", cat.latin1(), m_curr_category); m_curr_category = intCat; emit signalClearLetterPicker(); load(); } } void AbView::setShowToView( Views view ) { qWarning("void AbView::setShowToView( View %d )", view); if ( m_curr_View != view ){ qWarning ("Change the View (Category is: %d)", m_curr_category); m_prev_View = m_curr_View; m_curr_View = view; updateView(); } } void AbView::setShowByLetter( char c, AbConfig::LPSearchMode mode ) { qWarning("void AbView::setShowByLetter( %c, %d )", c, mode ); assert( mode < AbConfig::LASTELEMENT ); OContact query; if ( c == 0 ){ load(); return; }else{ // If the current Backend is unable to solve the query, we will // ignore the request .. if ( ! m_contactdb->hasQuerySettings( OContactAccess::WildCards | OContactAccess::IgnoreCase ) ){ return; } switch( mode ){ case AbConfig::LastName: query.setLastName( QString("%1*").arg(c) ); break; case AbConfig::FileAs: query.setFileAs( QString("%1*").arg(c) ); break; default: diff --git a/core/pim/addressbook/addressbook.pro b/core/pim/addressbook/addressbook.pro index 1637cac..c90568a 100644 --- a/core/pim/addressbook/addressbook.pro +++ b/core/pim/addressbook/addressbook.pro @@ -1,53 +1,51 @@ TEMPLATE = app #CONFIG = qt warn_on release CONFIG = qt warn_on debug DESTDIR = $(OPIEDIR)/bin HEADERS = addressbook.h \ contacteditor.h \ - ocontactfields.h \ ablabel.h \ abtable.h \ picker.h \ ofloatbar.h \ configdlg.h \ abconfig.h \ abview.h SOURCES = main.cpp \ addressbook.cpp \ contacteditor.cpp \ - ocontactfields.cpp \ ablabel.cpp \ abtable.cpp \ picker.cpp \ configdlg.cpp \ abconfig.cpp \ abview.cpp INTERFACES = configdlg_base.ui TARGET = addressbook INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include LIBS += -lqpe -lopie TRANSLATIONS = ../../../i18n/de/addressbook.ts \ ../../../i18n/nl/addressbook.ts \ ../../../i18n/da/addressbook.ts \ ../../../i18n/xx/addressbook.ts \ ../../../i18n/en/addressbook.ts \ ../../../i18n/es/addressbook.ts \ ../../../i18n/fr/addressbook.ts \ ../../../i18n/hu/addressbook.ts \ ../../../i18n/ja/addressbook.ts \ ../../../i18n/ko/addressbook.ts \ ../../../i18n/no/addressbook.ts \ ../../../i18n/pl/addressbook.ts \ ../../../i18n/pt/addressbook.ts \ ../../../i18n/pt_BR/addressbook.ts \ ../../../i18n/sl/addressbook.ts \ ../../../i18n/zh_CN/addressbook.ts \ ../../../i18n/it/addressbook.ts \ ../../../i18n/zh_TW/addressbook.ts include ( $(OPIEDIR)/include.pro ) diff --git a/core/pim/addressbook/configdlg.cpp b/core/pim/addressbook/configdlg.cpp index 629feef..981f5e0 100644 --- a/core/pim/addressbook/configdlg.cpp +++ b/core/pim/addressbook/configdlg.cpp @@ -1,154 +1,154 @@ #include "configdlg.h" -#include "ocontactfields.h" #include <qcheckbox.h> #include <qradiobutton.h> #include <qlistbox.h> #include <qpushbutton.h> #include <qiconset.h> #include <qpe/resource.h> #include <opie/ocontact.h> +#include "opie/ocontactfields.h" ConfigDlg::ConfigDlg( QWidget *parent, const char *name): ConfigDlg_Base(parent, name, true ) { contFields = OContactFields::trfields(); // We add all Fields into the Listbox for (uint i=0; i < contFields.count(); i++) { allFieldListBox->insertItem( contFields[i] ); } // Reset Widget Flags: This was not changeable by designer :( setWFlags ( WStyle_ContextHelp ); // Set Pics to Buttons and Tabs m_upButton->setIconSet( QIconSet( Resource::loadPixmap( "addressbook/up" ) ) ); m_downButton->setIconSet( QIconSet( Resource::loadPixmap( "addressbook/down" ) ) ); m_addButton->setIconSet( QIconSet( Resource::loadPixmap( "addressbook/add" ) ) ); m_removeButton->setIconSet( QIconSet( Resource::loadPixmap( "addressbook/sub" ) ) ); // Get the translation maps between Field ID and translated strings m_mapStrToID = OContactFields::trFieldsToId(); m_mapIDToStr = OContactFields::idToTrFields(); connect ( m_addButton, SIGNAL( clicked() ), this, SLOT( slotItemAdd() ) ); connect ( m_removeButton, SIGNAL( clicked() ), this, SLOT( slotItemRemove() ) ); connect ( m_upButton, SIGNAL( clicked() ), this, SLOT( slotItemUp() ) ); connect ( m_downButton, SIGNAL( clicked() ), this, SLOT( slotItemDown() ) ); } void ConfigDlg::slotItemUp() { qWarning( "void ConfigDlg::slotItemUp()" ); int i = fieldListBox->currentItem(); if ( i > 0 ) { QString item = fieldListBox->currentText(); fieldListBox->removeItem( i ); fieldListBox->insertItem( item, i-1 ); fieldListBox->setCurrentItem( i-1 ); } } void ConfigDlg::slotItemDown() { qWarning( "void ConfigDlg::slotItemDown()" ); int i = fieldListBox->currentItem(); if ( i < (int)fieldListBox->count() - 1 ) { QString item = fieldListBox->currentText(); fieldListBox->removeItem( i ); fieldListBox->insertItem( item, i+1 ); fieldListBox->setCurrentItem( i+1 ); } } void ConfigDlg::slotItemAdd() { qWarning( "void ConfigDlg::slotItemAdd()" ); int i = allFieldListBox->currentItem(); if ( i > 0 ) { QString item = allFieldListBox->currentText(); qWarning("ADding %s", item.latin1()); fieldListBox->insertItem( item ); } } void ConfigDlg::slotItemRemove() { qWarning( "void ConfigDlg::slotItemRemove()" ); int i = fieldListBox->currentItem(); if ( i > 0 ) { fieldListBox->removeItem( i ); } } void ConfigDlg::setConfig( const AbConfig& cnf ) { m_config = cnf; m_useRegExp->setChecked( m_config.useRegExp() ); m_useWildCard->setChecked( m_config.useWildCards() ); m_useQtMail->setChecked( m_config.useQtMail() ); m_useOpieMail->setChecked( m_config.useOpieMail() ); m_useCaseSensitive->setChecked( m_config.beCaseSensitive() ); switch( m_config.fontSize() ){ case 0: m_smallFont->setChecked( true ); m_normalFont->setChecked( false ); m_largeFont->setChecked( false ); break; case 1: m_smallFont->setChecked( false ); m_normalFont->setChecked( true ); m_largeFont->setChecked( false ); break; case 2: m_smallFont->setChecked( false ); m_normalFont->setChecked( false ); m_largeFont->setChecked( true ); break; } for( uint i = 0; i < m_config.orderList().count(); i++ ) { fieldListBox -> insertItem ( m_mapIDToStr[ m_config.orderList()[i] ] ); } m_fixedBars->setChecked( m_config.fixedBars() ); m_moveBars->setChecked( !m_config.fixedBars() ); } AbConfig ConfigDlg::getConfig() { m_config.setUseRegExp( m_useRegExp->isOn() ); m_config.setUseWildCards( m_useWildCard->isOn() ); m_config.setUseQtMail( m_useQtMail->isOn() ); m_config.setUseOpieMail( m_useOpieMail->isOn() ); m_config.setBeCaseSensitive( m_useCaseSensitive->isChecked() ); if ( m_smallFont->isChecked() ) m_config.setFontSize( 0 ); if ( m_normalFont->isChecked() ) m_config.setFontSize( 1 ); if ( m_largeFont->isChecked() ) m_config.setFontSize( 2 ); QValueList<int> orderlist; for( int i = 0; i < (int)fieldListBox->count(); i++ ) { orderlist.append( m_mapStrToID[ fieldListBox->text(i) ] ); } m_config.setOrderList( orderlist ); m_config.setFixedBars( m_fixedBars->isChecked() ); return m_config; } diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp index 9d1a1c7..8fbd065 100644 --- a/core/pim/addressbook/contacteditor.cpp +++ b/core/pim/addressbook/contacteditor.cpp @@ -1,216 +1,215 @@ /* * Copyright (c) 2002 Michael R. Crawford <mike@tuxnami.org> * Copyright (C) 2002 by Stefan Eilers (eilers.stefan@epost.de) * * 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 "ocontactfields.h" #include <qpe/categoryselect.h> #include <qpe/qpeapplication.h> #include <qpe/qpedialog.h> #include <qpe/timeconversion.h> #include <opie/ocontact.h> #include <qpe/resource.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> #include <qlistbox.h> #include <qhbox.h> #include <qaction.h> #include <qiconset.h> #include <qmessagebox.h> #include <qwhatsthis.h> #include <assert.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, QWidget *parent, const char *name, WFlags ) : QDialog( parent, name, TRUE, WStyle_ContextHelp ), defaultEmailChooserPosition( -1 ), m_personalView ( false ), cmbDefaultEmail( 0 ), initializing ( false ) { initializing = true; init(); setEntry( entry ); // cmbDefaultEmail = 0; // defaultEmailChooserPosition = -1; initializing = false; } ContactEditor::~ContactEditor() { } void ContactEditor::init() { qWarning("init() START"); uint i = 0; QStringList trlChooserNames; for (i = 0; i <= 6; i++) { slHomeAddress.append( "" ); slBusinessAddress.append( "" ); } trlChooserNames = OContactFields::trphonefields( false ); slChooserNames = OContactFields::untrphonefields( false ); slDynamicEntries = OContactFields::untrdetailsfields( false ); trlDynamicEntries = OContactFields::trdetailsfields( false ); // Ok, we have to remove elements from the list of dynamic entries // which are now stored in special (not dynamic) widgets.. // Otherwise we will get problems with field assignments! (se) slDynamicEntries.remove("Anniversary"); slDynamicEntries.remove("Birthday"); slDynamicEntries.remove("Gender"); // The same with translated fields.. But I will // use the translation map to avoid mismatches.. QMap<int, QString> translMap = OContactFields::idToTrFields(); trlDynamicEntries.remove( translMap[Qtopia::Anniversary] ); trlDynamicEntries.remove( translMap[Qtopia::Birthday] ); trlDynamicEntries.remove( translMap[Qtopia::Gender] ); // Last Check to be sure.. assert( slDynamicEntries.count() == trlDynamicEntries.count() ); assert( slChooserNames.count() == trlChooserNames.count() ); for (i = 0; i < slChooserNames.count(); i++) slChooserValues.append(""); 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->setHScrollBarMode( QScrollView::AlwaysOff ); // svGeneral->setVScrollBarMode( QScrollView::AlwaysOff ); 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 ); QWhatsThis::add( btnFullName, tr( "Press to enter last- middle and firstname" ) ); gl->addWidget( btnFullName, 0, 0 ); txtFullName = new QLineEdit( container ); QWhatsThis::add( txtFullName, tr( "Enter fullname directly ! If you have a lastname with multiple words ( for instance \"de la Guerra\"), please write <lastname>,<firstnames> like this: \"de la Guerra, Carlos Pedro\"" ) ); gl->addWidget( txtFullName, 0, 1 ); QLabel *l = new QLabel( tr( "Job Title" ), container ); QWhatsThis::add( l, tr( "The jobtitle.." ) ); gl->addWidget( l, 1, 0 ); txtJobTitle = new QLineEdit( container ); QWhatsThis::add( txtJobTitle, tr( "The jobtitle.." ) ); gl->addWidget( txtJobTitle, 1, 1 ); l = new QLabel( tr("Suffix"), container ); QWhatsThis::add( l, tr( "Something like \"jr.\".." ) ); gl->addWidget( l, 2, 0 ); txtSuffix = new QLineEdit( container ); QWhatsThis::add( txtSuffix, tr( "Something like \"jr.\".." ) ); gl->addWidget( txtSuffix, 2, 1 ); l = new QLabel( tr( "Organization" ), container ); QWhatsThis::add( l, tr( "The working place of the contact" ) ); gl->addWidget( l, 3, 0 ); txtOrganization = new QLineEdit( container ); QWhatsThis::add( txtOrganization, tr( "The working place of the contact" ) ); gl->addWidget( txtOrganization, 3, 1 ); // Chooser 1 cmbChooserField1 = new QComboBox( FALSE, container ); QWhatsThis::add( cmbChooserField1, tr( "Press to select attribute to change" ) ); cmbChooserField1->setMaximumWidth( 90 ); gl->addWidget( cmbChooserField1, 4, 0 ); // Textfield for chooser 1. // Now use Widgetstack to contain the textfield and the default-email combo ! m_widgetStack1 = new QWidgetStack( container ); txtChooserField1 = new QLineEdit( m_widgetStack1 ); m_widgetStack1 -> addWidget( txtChooserField1, TextField ); gl->addWidget( m_widgetStack1, 4, 1 ); m_widgetStack1 -> raiseWidget( TextField ); // Chooser 2 cmbChooserField2 = new QComboBox( FALSE, container ); QWhatsThis::add( cmbChooserField2, tr( "Press to select attribute to change" ) ); cmbChooserField2->setMaximumWidth( 90 ); gl->addWidget( cmbChooserField2, 5, 0 ); // Textfield for chooser 2 // Now use WidgetStack to contain the textfield and the default-email combo! m_widgetStack2 = new QWidgetStack( container ); txtChooserField2 = new QLineEdit( m_widgetStack2 ); m_widgetStack2 -> addWidget( txtChooserField2, TextField ); gl->addWidget( m_widgetStack2, 5, 1 ); m_widgetStack2 -> raiseWidget( TextField ); // Chooser 3 cmbChooserField3 = new QComboBox( FALSE, container ); QWhatsThis::add( cmbChooserField3, tr( "Press to select attribute to change" ) ); cmbChooserField3->setMaximumWidth( 90 ); gl->addWidget( cmbChooserField3, 6, 0 ); // Textfield for chooser 2 // Now use WidgetStack to contain the textfield and the default-email combo! m_widgetStack3 = new QWidgetStack( container ); txtChooserField3 = new QLineEdit( m_widgetStack3 ); m_widgetStack3 -> addWidget( txtChooserField3, TextField ); gl->addWidget( m_widgetStack3, 6, 1 ); m_widgetStack3 -> raiseWidget( TextField ); diff --git a/core/pim/addressbook/contacteditor.h b/core/pim/addressbook/contacteditor.h index e7432ee..72d14a9 100644 --- a/core/pim/addressbook/contacteditor.h +++ b/core/pim/addressbook/contacteditor.h @@ -1,192 +1,191 @@ /* * 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 <opie/ocontactfields.h> #include <qpe/datebookmonth.h> #include <qdialog.h> #include <qlist.h> #include <qmap.h> #include <qstringlist.h> #include <qwidgetstack.h> -#include "ocontactfields.h" - const int NAME_LF = 0; const int NAME_LFM = 1; const int NAME_FL = 2; const int NAME_FML = 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, QWidget *parent = 0, const char *name = 0, WFlags fl = 0 ); ~ContactEditor(); 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 saveEntry(); bool isEmpty(); void cleanupFields(); void updateDatePicker(); QString parseName( QString fullName, int type ); void chooserError( int index ); 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 slotSuffixChange( const QString &textChanged ); void slotOrganizationChange( const QString &textChanged ); void slotAnniversaryDateChanged( int year, int month, int day); void slotBirthdayDateChanged( int year, int month, int day); void slotRemoveBirthday(); void slotRemoveAnniversary(); void defaultEmailChanged(int); private: enum StackWidgets { TextField = 1, Combo }; int defaultEmailChooserPosition; void populateDefaultEmailCmb(); void chooserChange( const QString&, int , QLineEdit*, int ); bool cmbChooserChange( int , QWidgetStack*, int ); OContactFields contactfields; OContact ent; QDialog *dlgNote; QDialog *dlgName; QList<QLineEdit> listValue; QList<QLabel> listName; QStringList slDynamicEntries; QStringList trlDynamicEntries; bool m_personalView; QStringList slHomeAddress; QStringList slBusinessAddress; QStringList slChooserNames; QStringList slChooserValues; QStringList emails; QString defaultEmail; 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; QWidgetStack* m_widgetStack1; QWidgetStack* m_widgetStack2; QWidgetStack* m_widgetStack3; QWidgetStack* m_widgetStack4; QComboBox *cmbChooserField1; QComboBox *cmbChooserField2; QComboBox *cmbChooserField3; QComboBox *cmbChooserField4; QComboBox *cmbDefaultEmail; 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; bool initializing; }; #endif |