summaryrefslogtreecommitdiff
path: root/core/pim/addressbook/ablabel.cpp
authoreilers <eilers>2003-03-24 07:44:33 (UTC)
committer eilers <eilers>2003-03-24 07:44:33 (UTC)
commit0e1275a67cae2435c0ac8cee2252f91737c2e10a (patch) (side-by-side diff)
tree0d65a291c21353a5e25932331b63e85050c6bff8 /core/pim/addressbook/ablabel.cpp
parent1b4836ba28ca57947d37699fc67cddd74fb29fbe (diff)
downloadopie-0e1275a67cae2435c0ac8cee2252f91737c2e10a.zip
opie-0e1275a67cae2435c0ac8cee2252f91737c2e10a.tar.gz
opie-0e1275a67cae2435c0ac8cee2252f91737c2e10a.tar.bz2
DetailView: If card is too big to show, use page up/down instead of
next/previous contact if cursor up/down is used ..
Diffstat (limited to 'core/pim/addressbook/ablabel.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/ablabel.cpp34
1 files changed, 24 insertions, 10 deletions
diff --git a/core/pim/addressbook/ablabel.cpp b/core/pim/addressbook/ablabel.cpp
index 80b57ae..6d8de91 100644
--- a/core/pim/addressbook/ablabel.cpp
+++ b/core/pim/addressbook/ablabel.cpp
@@ -90,6 +90,7 @@ void AbLabel::sync()
void AbLabel::keyPressEvent( QKeyEvent *e )
{
+
// Commonly handled keys
if ( !m_empty ){
switch( e->key() ) {
@@ -103,20 +104,33 @@ void AbLabel::keyPressEvent( QKeyEvent *e )
break;
case Qt::Key_Up:
qWarning( "UP..");
- --m_itCurContact;
- if ( *m_itCurContact != OContact() )
- sync();
- else
- m_itCurContact = m_viewList.end();
+ if ( ( visibleHeight() < contentsHeight() ) &&
+ ( verticalScrollBar()->value() > verticalScrollBar()->minValue() ) )
+ scrollBy( 0, -(visibleHeight()-20) );
+ else {
+ --m_itCurContact;
+ if ( *m_itCurContact != OContact() )
+ sync();
+ else
+ m_itCurContact = m_viewList.end();
+ }
break;
case Qt::Key_Down:
qWarning( "DOWN..");
- ++m_itCurContact;
- if ( *m_itCurContact != OContact() )
- sync();
- else
- m_itCurContact = m_viewList.begin();
+// qWarning( "visible: %d, content: %d",visibleHeight(),contentsHeight());
+// qWarning( "value: %d; barMaxValue: %d", verticalScrollBar()->value()
+// , verticalScrollBar()->maxValue() );
+ if ( ( visibleHeight() < contentsHeight() ) &&
+ ( verticalScrollBar()->value() < verticalScrollBar()->maxValue() ) )
+ scrollBy( 0, visibleHeight()-20 );
+ else {
+ ++m_itCurContact;
+ if ( *m_itCurContact != OContact() )
+ sync();
+ else
+ m_itCurContact = m_viewList.begin();
+ }
break;
case Qt::Key_Return: // fall through
case Qt::Key_Space: // fall through