summaryrefslogtreecommitdiff
path: root/core/pim/addressbook/ablabel.cpp
Side-by-side diff
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
@@ -87,12 +87,13 @@ void AbLabel::sync()
QString text = (*m_itCurContact).toRichText();
setText( text );
}
void AbLabel::keyPressEvent( QKeyEvent *e )
{
+
// Commonly handled keys
if ( !m_empty ){
switch( e->key() ) {
case Qt::Key_Left:
qWarning( "Left..");
case Qt::Key_Right:
@@ -100,26 +101,39 @@ void AbLabel::keyPressEvent( QKeyEvent *e )
case Qt::Key_F33:
qWarning( "OK..");
emit signalOkPressed();
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
case Qt::Key_Enter: // we want to switch back
emit signalOkPressed();
break;