-rw-r--r-- | core/pim/addressbook/TODO | 7 | ||||
-rw-r--r-- | core/pim/addressbook/abtable.cpp | 76 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.cpp | 47 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.h | 3 | ||||
-rw-r--r-- | core/pim/addressbook/configdlg.cpp | 16 | ||||
-rw-r--r-- | core/pim/addressbook/configdlg.h | 4 | ||||
-rw-r--r-- | core/pim/addressbook/configdlg_base.ui | 105 | ||||
-rw-r--r-- | core/pim/addressbook/opie-addressbook.control | 2 | ||||
-rw-r--r-- | core/pim/addressbook/picker.cpp | 12 |
9 files changed, 227 insertions, 45 deletions
diff --git a/core/pim/addressbook/TODO b/core/pim/addressbook/TODO index 796dc49..80ec2d9 100644 --- a/core/pim/addressbook/TODO +++ b/core/pim/addressbook/TODO @@ -1,19 +1,20 @@ Stuff todo until OPIE 1.0 : +Pending bugfixes from previous work: + Urgent: - Font menu is invisible using german translation Important: +- Overview window cleanup needed.. - Cursor keys should work in detail-view (ablabel) - "What's this" should be added - Store last settings of combo-boxes -- Mail-Icon is missing -- Overview window cleanup needed.. - 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 Less important: @@ -31,6 +32,8 @@ 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. diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp index 97b26db..4feadeb 100644 --- a/core/pim/addressbook/abtable.cpp +++ b/core/pim/addressbook/abtable.cpp @@ -683,47 +683,59 @@ void AbTable::slotDoFind( const QString &findString, bool caseSensitive, bool us AbTableItem *ati; QRegExp r( findString ); r.setCaseSensitive( caseSensitive ); r.setWildcard( !useRegExp ); rows = numRows(); static bool wrapAround = true; + bool try_again = false; - if ( !backwards ) { - for ( row = currFindRow + 1; row < rows; row++ ) { - ati = static_cast<AbTableItem*>( item(row, 0) ); - if ( contactCompare( contactList[ati], r, category ) ) - break; + // We will loop until we found an entry or found nothing. + do { + if ( !backwards ) { + for ( row = currFindRow + 1; row < rows; row++ ) { + ati = static_cast<AbTableItem*>( item(row, 0) ); + if ( contactCompare( contactList[ati], r, category ) ){ + try_again = false; + break; + } + } + } else { + for ( row = currFindRow - 1; row > -1; row-- ) { + ati = static_cast<AbTableItem*>( item(row, 0) ); + if ( contactCompare( contactList[ati], r, category ) ){ + try_again = false; + break; + } + } } - } else { - for ( row = currFindRow - 1; row > -1; row-- ) { - ati = static_cast<AbTableItem*>( item(row, 0) ); - if ( contactCompare( contactList[ati], r, category ) ) - break; + if ( row >= rows || row < 0 ) { + if ( row < 0 ) + currFindRow = rows; + else + currFindRow = -1; + + if ( wrapAround ){ + emit signalWrapAround(); + try_again = true; + }else{ + emit signalNotFound(); + try_again = false; + } + + wrapAround = !wrapAround; + } else { + currFindRow = row; + QTableSelection foundSelection; + foundSelection.init( currFindRow, 0 ); + foundSelection.expandTo( currFindRow, numCols() - 1 ); + addSelection( foundSelection ); + setCurrentCell( currFindRow, 0 /* numCols() - 1 */ ); + wrapAround = true; + try_again = false; } - } - if ( row >= rows || row < 0 ) { - if ( row < 0 ) - currFindRow = rows; - else - currFindRow = -1; - - if ( wrapAround ) - emit signalWrapAround(); - else - emit signalNotFound(); - - wrapAround = !wrapAround; - } else { - currFindRow = row; - QTableSelection foundSelection; - foundSelection.init( currFindRow, 0 ); - foundSelection.expandTo( currFindRow, numCols() - 1 ); - addSelection( foundSelection ); - setCurrentCell( currFindRow, 0 /* numCols() - 1 */ ); - wrapAround = true; - } + } while ( try_again ); } static bool contactCompare( const OContact &cnt, const QRegExp &r, int category ) { bool returnMe; QArray<int> cats; diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp index 3466801..39d8321 100644 --- a/core/pim/addressbook/addressbook.cpp +++ b/core/pim/addressbook/addressbook.cpp @@ -77,23 +77,29 @@ 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_useOpieMail=cfg.readBoolEntry( "useOpieMail" ); + initFields(); setCaption( tr("Contacts") ); setIcon( Resource::loadPixmap( "AddressBook" ) ); @@ -166,13 +172,13 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, 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( "qtmail/reply" ), + 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 ); @@ -279,18 +285,22 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, void AddressbookWindow::slotConfig() { ConfigDlg* dlg = new ConfigDlg( this, "Config" ); dlg -> setUseRegExp ( useRegExp ); dlg -> setBeCaseSensitive( caseSensitive ); dlg -> setSignalWrapAround( doNotifyWrapAround ); + dlg -> setQtMail ( m_useQtMail ); + dlg -> setOpieMail ( m_useOpieMail ); dlg -> showMaximized(); if ( dlg -> exec() ) { qWarning ("Config Dialog accepted !"); useRegExp = dlg -> useRegExp(); caseSensitive = dlg -> beCaseSensitive(); doNotifyWrapAround = dlg -> signalWrapAround(); + m_useQtMail = dlg -> useQtMail(); + m_useOpieMail= dlg -> useOpieMail(); } delete dlg; } @@ -377,12 +387,15 @@ AddressbookWindow::~AddressbookWindow() cfg.writeEntry("fontSize", startFontSize); cfg.setGroup("Search"); cfg.writeEntry("useRegExp", useRegExp); cfg.writeEntry("caseSensitive", caseSensitive); cfg.writeEntry("doNotifyWrapAround", doNotifyWrapAround); + cfg.setGroup("Mail"); + cfg.writeEntry( "useQtMail", m_useQtMail ); + cfg.writeEntry( "useOpieMail", m_useOpieMail); } void AddressbookWindow::slotUpdateToolbar() { OContact ce = abList->currentEntry(); actionMail->setEnabled( !ce.defaultEmail().isEmpty() ); @@ -491,14 +504,42 @@ void AddressbookWindow::slotViewEdit() void AddressbookWindow::writeMail() { OContact c = abList->currentEntry(); QString name = c.fileAs(); QString email = c.defaultEmail(); - QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)"); - e << name << email; + + // I prefer the OPIE-Environment variable before the + // QPE-one.. + QString basepath = QString::fromLatin1( getenv("OPIEDIR") ); + if ( basepath.isEmpty() ) + basepath = QString::fromLatin1( getenv("QPEDIR") ); + + // Try to access the preferred. If not possible, try to + // switch to the other one.. + if ( m_useQtMail ){ + qWarning ("Accessing: %s", (basepath + "/bin/qtmail").latin1()); + if ( QFile::exists( basepath + "/bin/qtmail" ) ){ + qWarning ("QCop"); + QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)"); + e << name << email; + return; + } else + m_useOpieMail = true; + } + if ( m_useOpieMail ){ + qWarning ("Accessing: %s", (basepath + "/bin/mail").latin1()); + if ( QFile::exists( basepath + "/bin/mail" ) ){ + qWarning ("QCop"); + QCopEnvelope e("QPE/Application/mail", "writeMail(QString,QString)"); + e << name << email; + return; + } else + m_useQtMail = true; + } + } static const char * beamfile = "/tmp/obex/contact.vcf"; void AddressbookWindow::slotBeam() { diff --git a/core/pim/addressbook/addressbook.h b/core/pim/addressbook/addressbook.h index 299ed70..8027ccf 100644 --- a/core/pim/addressbook/addressbook.h +++ b/core/pim/addressbook/addressbook.h @@ -115,12 +115,15 @@ private: OFloatBar* searchBar; QLineEdit* searchEdit; bool useRegExp; bool doNotifyWrapAround; bool caseSensitive; + bool m_useQtMail; + bool m_useOpieMail; + QAction *actionNew, *actionEdit, *actionTrash, *actionFind, *actionBeam, *actionPersonal, *actionMail; bool bAbEditFirstTime; int viewMargin; bool syncing; diff --git a/core/pim/addressbook/configdlg.cpp b/core/pim/addressbook/configdlg.cpp index b7c3b77..c0195d1 100644 --- a/core/pim/addressbook/configdlg.cpp +++ b/core/pim/addressbook/configdlg.cpp @@ -12,12 +12,20 @@ bool ConfigDlg::useRegExp() const return m_useRegExp->isOn(); } bool ConfigDlg::useWildCards() const { return m_useWildCard->isOn(); } +bool ConfigDlg::useQtMail() const +{ + return m_useQtMail->isOn(); +} +bool ConfigDlg::useOpieMail() const +{ + return m_useOpieMail->isOn(); +} bool ConfigDlg::beCaseSensitive() const { return m_useCaseSensitive->isChecked(); } bool ConfigDlg::signalWrapAround() const { @@ -36,10 +44,18 @@ void ConfigDlg::setBeCaseSensitive( bool v ) m_useCaseSensitive->setChecked( v ); } void ConfigDlg::setSignalWrapAround( bool v ) { m_signalWrapAround->setChecked( v ); } +void ConfigDlg::setQtMail( bool v ) +{ + m_useQtMail->setChecked( v ); +} +void ConfigDlg::setOpieMail( bool v ) +{ + m_useOpieMail->setChecked( v ); +} diff --git a/core/pim/addressbook/configdlg.h b/core/pim/addressbook/configdlg.h index 8be469b..34e9718 100644 --- a/core/pim/addressbook/configdlg.h +++ b/core/pim/addressbook/configdlg.h @@ -11,15 +11,19 @@ public: // Search Settings bool useRegExp() const; bool useWildCards() const; bool beCaseSensitive() const; bool signalWrapAround() const; + bool useQtMail() const; + bool useOpieMail() const; void setUseRegExp( bool v ); void setUseWildCards( bool v ); void setBeCaseSensitive( bool v ); void setSignalWrapAround( bool v ); + void setQtMail( bool v ); + void setOpieMail( bool v ); }; #endif diff --git a/core/pim/addressbook/configdlg_base.ui b/core/pim/addressbook/configdlg_base.ui index e082702..d3ea12e 100644 --- a/core/pim/addressbook/configdlg_base.ui +++ b/core/pim/addressbook/configdlg_base.ui @@ -9,13 +9,13 @@ </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>227</width> + <width>217</width> <height>287</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>MyDialog1</string> @@ -150,12 +150,115 @@ <height>20</height> </size> </property> </spacer> </vbox> </widget> + <widget> + <class>QWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>tab</cstring> + </property> + <attribute> + <name>title</name> + <string>Mail</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>ButtonGroup2</cstring> + </property> + <property stdset="1"> + <name>title</name> + <string>Mail</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_useQtMail</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Prefer QT-Mail </string> + </property> + <property stdset="1"> + <name>checked</name> + <bool>true</bool> + </property> + </widget> + <widget> + <class>QRadioButton</class> + <property stdset="1"> + <name>name</name> + <cstring>m_useOpieMail</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Prefer Opie-Mail</string> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel1</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Notice: QT-Mail is just +provided in the SHARP +default ROM. Opie-Mail +is provided free !</string> + </property> + </widget> + </vbox> + </widget> + <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> diff --git a/core/pim/addressbook/opie-addressbook.control b/core/pim/addressbook/opie-addressbook.control index 14b0770..0a04ee6 100644 --- a/core/pim/addressbook/opie-addressbook.control +++ b/core/pim/addressbook/opie-addressbook.control @@ -1,9 +1,9 @@ Files: bin/addressbook apps/1Pim/addressbook.desktop Priority: optional Section: opie/applications -Maintainer: Warwick Allison <warwick@trolltech.com> +Maintainer: Stefan Eilers <eilers.stefan@epost.de> Architecture: arm Version: $QPE_VERSION-$SUB_VERSION Depends: opie-base ($QPE_VERSION) libopie Description: Contacts A simple addressbook for the Opie environment. diff --git a/core/pim/addressbook/picker.cpp b/core/pim/addressbook/picker.cpp index 7f4acb0..2c7dd71 100644 --- a/core/pim/addressbook/picker.cpp +++ b/core/pim/addressbook/picker.cpp @@ -90,15 +90,15 @@ void PickerLabel::mouseReleaseEvent( QMouseEvent* /* e */ ) if (lastLetter != letter1 && lastLetter != letter2 && lastLetter != letter3 && lastLetter != '\0') QTimer::singleShot( 0, this, SLOT(emitClearSignal()) ); switch (currentLetter) { case 0: - tmpStr = "<qt><u><font color=\"#7F0000\">"; + tmpStr = "<qt><u><b><font color=\"#FF00FF\">"; tmpStr += letter1; - tmpStr += "</font></u>"; + tmpStr += "</font></b></u>"; tmpStr += letter2; tmpStr += letter3; tmpStr += "</qt>"; setText(tmpStr); @@ -107,15 +107,15 @@ void PickerLabel::mouseReleaseEvent( QMouseEvent* /* e */ ) emit selectedLetter( letter1 ); break; case 1: tmpStr = "<qt>"; tmpStr += letter1; - tmpStr += "<u><font color=\"#7F0000\">"; + tmpStr += "<u><b><font color=\"#FF00FF\">"; tmpStr += letter2; - tmpStr += "</font></u>"; + tmpStr += "</font></b></u>"; tmpStr += letter3; tmpStr += "</qt>"; setText(tmpStr); currentLetter++; @@ -124,15 +124,15 @@ void PickerLabel::mouseReleaseEvent( QMouseEvent* /* e */ ) break; case 2: tmpStr = "<qt>"; tmpStr += letter1; tmpStr += letter2; - tmpStr += "<u><font color=\"#7F0000\">"; + tmpStr += "<u><b><font color=\"#FF00FF\">"; tmpStr += letter3; - tmpStr += "</font></u></qt>"; + tmpStr += "</font></b></u></qt>"; setText(tmpStr); currentLetter++; lastLetter = letter3; emit selectedLetter( letter3 ); |