summaryrefslogtreecommitdiff
path: root/core
authoreilers <eilers>2002-10-21 16:29:20 (UTC)
committer eilers <eilers>2002-10-21 16:29:20 (UTC)
commit507afe645a86191815a2f85380a452ab6797e383 (patch) (side-by-side diff)
treee69293f25af3d6d8e2125b0f92a097615ddb0a38 /core
parent71c7800e8ae5dc2d701242828ceb8c11bcd96fbe (diff)
downloadopie-507afe645a86191815a2f85380a452ab6797e383.zip
opie-507afe645a86191815a2f85380a452ab6797e383.tar.gz
opie-507afe645a86191815a2f85380a452ab6797e383.tar.bz2
Some usability updates in picker and find..
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/TODO7
-rw-r--r--core/pim/addressbook/ablabel.cpp43
-rw-r--r--core/pim/addressbook/abtable.cpp45
-rw-r--r--core/pim/addressbook/abtable.h7
-rw-r--r--core/pim/addressbook/addressbook.cpp70
-rw-r--r--core/pim/addressbook/addressbook.h7
-rw-r--r--core/pim/addressbook/picker.cpp24
-rw-r--r--core/pim/addressbook/picker.h3
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;