-rw-r--r-- | core/pim/addressbook/TODO | 7 | ||||
-rw-r--r-- | core/pim/addressbook/ablabel.cpp | 43 | ||||
-rw-r--r-- | core/pim/addressbook/abtable.cpp | 45 | ||||
-rw-r--r-- | core/pim/addressbook/abtable.h | 7 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.cpp | 70 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.h | 7 | ||||
-rw-r--r-- | core/pim/addressbook/picker.cpp | 24 | ||||
-rw-r--r-- | core/pim/addressbook/picker.h | 3 |
8 files changed, 164 insertions, 42 deletions
diff --git a/core/pim/addressbook/TODO b/core/pim/addressbook/TODO index 4daa2a8..796dc49 100644 --- a/core/pim/addressbook/TODO +++ b/core/pim/addressbook/TODO @@ -8,3 +8,3 @@ Important: -- Picker: Activated letter schould be more visible +- Cursor keys should work in detail-view (ablabel) - "What's this" should be added @@ -12,2 +12,3 @@ Important: - Mail-Icon is missing +- Overview window cleanup needed.. - Finishing of new View functions (List, Phonebook...) @@ -32,2 +33,4 @@ Fixed: qpdf has. -- Adding a configuration dialog
\ No newline at end of file +- Adding a configuration dialog +- Picker: Activated letter schould be more visible +- Advanced handling of cursor keys (search..) diff --git a/core/pim/addressbook/ablabel.cpp b/core/pim/addressbook/ablabel.cpp index cf1e39f..ea80700 100644 --- a/core/pim/addressbook/ablabel.cpp +++ b/core/pim/addressbook/ablabel.cpp @@ -49,5 +49,42 @@ void AbLabel::keyPressEvent( QKeyEvent *e ) { - if ( e->key() == Qt::Key_F33 ) { - emit okPressed(); - } + // Commonly handled keys + switch( e->key() ) { + case Qt::Key_Left: + qWarning( "Left.."); + case Qt::Key_F33: + qWarning( "OK.."); + emit okPressed(); + break; + } + + + if ( /* m_inSearch */ false ) { + // Running in seach-mode, therefore we will interprete + // some key differently + qWarning("Received key in search mode"); + switch( e->key() ) { + case Qt::Key_Up: + qWarning("a"); + // emit signalSearchBackward(); + break; + case Qt::Key_Down: + qWarning("b"); + // emit signalSearchNext(); + break; + } + + } else { + qWarning("Received key in NON search mode"); + + switch( e->key() ) { + case Qt::Key_Up: + qWarning("a"); + // emit signalSearchBackward(); + break; + case Qt::Key_Down: + qWarning("b"); + // emit signalSearchNext(); + break; + } + } } diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp index d4dcf7b..97b26db 100644 --- a/core/pim/addressbook/abtable.cpp +++ b/core/pim/addressbook/abtable.cpp @@ -132,2 +132,3 @@ AbTable::AbTable( const QValueList<int> *order, QWidget *parent, const char *nam mCat( 0 ), + m_inSearch (false), m_contactdb ("addressbook", 0l, 0l, false) // Handle syncing myself.. ! @@ -262,10 +263,36 @@ void AbTable::keyPressEvent( QKeyEvent *e ) - switch( e->key() ) { - case Qt::Key_Space: - case Qt::Key_Return: - case Qt::Key_Enter: - emit details(); - break; - default: - QTable::keyPressEvent( e ); + if ( m_inSearch ) { + // Running in seach-mode, therefore we will interprete + // some key differently + qWarning("Received key in search mode"); + switch( e->key() ) { + case Qt::Key_Space: + case Qt::Key_Return: + case Qt::Key_Enter: + emit details(); + break; + case Qt::Key_Up: + qWarning("a"); + emit signalSearchBackward(); + break; + case Qt::Key_Down: + qWarning("b"); + emit signalSearchNext(); + break; + default: + QTable::keyPressEvent( e ); + } + + } else { + qWarning("Received key in NON search mode"); + + switch( e->key() ) { + case Qt::Key_Space: + case Qt::Key_Return: + case Qt::Key_Enter: + emit details(); + break; + default: + QTable::keyPressEvent( e ); + } } @@ -685,3 +712,3 @@ void AbTable::slotDoFind( const QString &findString, bool caseSensitive, bool us emit signalNotFound(); - + wrapAround = !wrapAround; diff --git a/core/pim/addressbook/abtable.h b/core/pim/addressbook/abtable.h index b445874..35a1e9e 100644 --- a/core/pim/addressbook/abtable.h +++ b/core/pim/addressbook/abtable.h @@ -100,2 +100,5 @@ public: + void inSearch() { m_inSearch = true; } + void offSearch() { m_inSearch = false; } + public slots: @@ -108,2 +111,4 @@ signals: void signalWrapAround(); + void signalSearchBackward(); // Signalled if backward search is requested + void signalSearchNext(); // Singalled if forward search is requested @@ -150,2 +155,4 @@ private: + bool m_inSearch; + OContactAccess m_contactdb; diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp index f7e4c95..3466801 100644 --- a/core/pim/addressbook/addressbook.cpp +++ b/core/pim/addressbook/addressbook.cpp @@ -80,3 +80,3 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, useRegExp(false), - DoSignalWrapAround(false), + doNotifyWrapAround(true), caseSensitive(false), @@ -87,2 +87,9 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, + // Read Config settings + Config cfg("AddressBook"); + cfg.setGroup("Search"); + useRegExp = cfg.readBoolEntry( "useRegExp" ); + caseSensitive = cfg.readBoolEntry( "caseSensitive" ); + doNotifyWrapAround = cfg.readBoolEntry( "doNotifyWrapAround" ); + initFields(); @@ -163,3 +170,3 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, a->addTo( searchBar ); - + a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "qtmail/reply" ), @@ -225,3 +232,9 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, connect( abList, SIGNAL( details() ), this, SLOT( slotListView() ) ); - connect( abList, SIGNAL(currentChanged(int,int)), this, SLOT(slotUpdateToolbar()) ); + connect( abList, SIGNAL( currentChanged(int,int) ), this, SLOT( slotUpdateToolbar() ) ); + connect( abList, SIGNAL( signalSearchNext() ), this, SLOT( slotFindNext() ) ); + connect( abList, SIGNAL( signalSearchBackward() ), this, SLOT( slotFindPrevious() ) ); + + // Maybe we should react on Wraparound and notfound ? + QObject::connect( abList, SIGNAL(signalNotFound()), this, SLOT(slotNotFound()) ); + QObject::connect( abList, SIGNAL(signalWrapAround()), this, SLOT(slotWrapAround()) ); @@ -260,9 +273,2 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, abList->setCurrentCell( 0, 0 ); - - // Read Config settings - Config cfg("AddressBook"); - cfg.setGroup("Search"); - useRegExp = cfg.readBoolEntry( "useRegExp" ); - caseSensitive = cfg.readBoolEntry( "caseSensitive" ); - DoSignalWrapAround = cfg.readBoolEntry( "signalWrapAround" ); @@ -277,3 +283,3 @@ void AddressbookWindow::slotConfig() dlg -> setBeCaseSensitive( caseSensitive ); - dlg -> setSignalWrapAround( DoSignalWrapAround ); + dlg -> setSignalWrapAround( doNotifyWrapAround ); dlg -> showMaximized(); @@ -283,3 +289,3 @@ void AddressbookWindow::slotConfig() caseSensitive = dlg -> beCaseSensitive(); - DoSignalWrapAround = dlg -> signalWrapAround(); + doNotifyWrapAround = dlg -> signalWrapAround(); } @@ -375,3 +381,3 @@ AddressbookWindow::~AddressbookWindow() cfg.writeEntry("caseSensitive", caseSensitive); - cfg.writeEntry("signalWrapAround", DoSignalWrapAround); + cfg.writeEntry("doNotifyWrapAround", doNotifyWrapAround); } @@ -658,5 +664,3 @@ void AddressbookWindow::slotPersonalView() actionTrash->setEnabled(TRUE); -#ifndef MAKE_FOR_SHARP_ROM actionFind->setEnabled(TRUE); -#endif slotUpdateToolbar(); // maybe some of the above could be moved there @@ -930,2 +934,3 @@ void AddressbookWindow::slotFindOpen() searchBar->show(); + abList -> inSearch(); searchEdit->setFocus(); @@ -935,2 +940,3 @@ void AddressbookWindow::slotFindClose() searchBar->hide(); + abList -> offSearch(); abList->setFocus(); @@ -942,8 +948,16 @@ void AddressbookWindow::slotFindNext() - // Maybe we should react on Wraparound and notfound ? -// QObject::connect( abList, SIGNAL(signalNotFound()), &frmFind, SLOT(slotNotFound()) ); -// QObject::connect( abList, SIGNAL(signalWrapAround()), &frmFind, SLOT(slotWrapAround()) ); - abList->slotDoFind( searchEdit->text(), caseSensitive, useRegExp, false); + searchEdit->clearFocus(); + abList->setFocus(); + if ( abList->numSelections() ) + abList->clearSelection(); + +} +void AddressbookWindow::slotFindPrevious() +{ + if ( centralWidget() == abView() ) + showList(); + + abList->slotDoFind( searchEdit->text(), caseSensitive, useRegExp, true); @@ -961,2 +975,20 @@ void AddressbookWindow::slotFind() +void AddressbookWindow::slotNotFound() +{ + qWarning("Got notfound signal !"); + QMessageBox::information( this, tr( "Not Found" ), + tr( "Unable to find a contact for this" ) + "\n" + + tr( "search pattern !" ) ); + + +} +void AddressbookWindow::slotWrapAround() +{ + qWarning("Got wrap signal !"); + if ( doNotifyWrapAround ) + QMessageBox::information( this, tr( "End of list" ), + tr( "End of list. Wrap around now.. !" ) + "\n" ); + +} + void AddressbookWindow::slotSetCategory( int c ) diff --git a/core/pim/addressbook/addressbook.h b/core/pim/addressbook/addressbook.h index 18b083f..299ed70 100644 --- a/core/pim/addressbook/addressbook.h +++ b/core/pim/addressbook/addressbook.h @@ -64,2 +64,4 @@ public slots: void setDocument( const QString & ); + void slotFindNext(); + void slotFindPrevious(); #ifdef __DEBUG_RELEASE @@ -89,3 +91,4 @@ private slots: void slotFind(); - void slotFindNext(); + void slotNotFound(); + void slotWrapAround(); @@ -114,3 +117,3 @@ private: bool useRegExp; - bool DoSignalWrapAround; + bool doNotifyWrapAround; bool caseSensitive; diff --git a/core/pim/addressbook/picker.cpp b/core/pim/addressbook/picker.cpp index a165451..7f4acb0 100644 --- a/core/pim/addressbook/picker.cpp +++ b/core/pim/addressbook/picker.cpp @@ -77,3 +77,12 @@ void PickerLabel::clearLetter() -void PickerLabel::mouseReleaseEvent( QMouseEvent *e ) +void PickerLabel::mousePressEvent( QMouseEvent* e ) +{ + // If one pickerlabel is was, and an other is now selected, we + // have to simulate the releaseevent.. Otherwise the new label + // will not get a highlighted letter.. + // Maybe there is a more intelligent solution, but this works and I am tired.. (se) + if ( ( currentLetter == 0 ) && ( lastLetter != '\0' ) ) mouseReleaseEvent( e ); +} + +void PickerLabel::mouseReleaseEvent( QMouseEvent* /* e */ ) { @@ -86,5 +95,5 @@ void PickerLabel::mouseReleaseEvent( QMouseEvent *e ) case 0: - tmpStr = "<qt><font color=\"#7F0000\">"; + tmpStr = "<qt><u><font color=\"#7F0000\">"; tmpStr += letter1; - tmpStr += "</font>"; + tmpStr += "</font></u>"; tmpStr += letter2; @@ -103,5 +112,5 @@ void PickerLabel::mouseReleaseEvent( QMouseEvent *e ) tmpStr += letter1; - tmpStr += "<font color=\"#7F0000\">"; + tmpStr += "<u><font color=\"#7F0000\">"; tmpStr += letter2; - tmpStr += "</font>"; + tmpStr += "</font></u>"; tmpStr += letter3; @@ -120,5 +129,5 @@ void PickerLabel::mouseReleaseEvent( QMouseEvent *e ) tmpStr += letter2; - tmpStr += "<font color=\"#7F0000\">"; + tmpStr += "<u><font color=\"#7F0000\">"; tmpStr += letter3; - tmpStr += "</font></qt>"; + tmpStr += "</font></u></qt>"; @@ -226,2 +235,3 @@ void LetterPicker::newLetter( char letter ) { + qWarning("LetterClicked"); emit letterClicked( letter ); diff --git a/core/pim/addressbook/picker.h b/core/pim/addressbook/picker.h index de5bd9d..d76d582 100644 --- a/core/pim/addressbook/picker.h +++ b/core/pim/addressbook/picker.h @@ -33,2 +33,3 @@ Q_OBJECT void mouseReleaseEvent( QMouseEvent *e ); + void mousePressEvent( QMouseEvent *e ); @@ -50,2 +51,3 @@ Q_OBJECT ~LetterPicker(); + @@ -59,2 +61,3 @@ Q_OBJECT PickerLabel *lblABC, *lblDEF, *lblGHI, *lblJKL, *lblMNO, *lblPQR, *lblSTU, *lblVWX, *lblYZ; + PickerLabel *lastLabel; |