summaryrefslogtreecommitdiff
path: root/core/pim/todo/tableview.cpp
Unidiff
Diffstat (limited to 'core/pim/todo/tableview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/tableview.cpp86
1 files changed, 80 insertions, 6 deletions
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp
index d9cda09..2e252d5 100644
--- a/core/pim/todo/tableview.cpp
+++ b/core/pim/todo/tableview.cpp
@@ -27,11 +27,11 @@
27*/ 27*/
28#include <stdlib.h> 28#include <stdlib.h>
29#include <cmath> 29#include <cmath>
30#include <cctype>
30 31
31#include <qcombobox.h> 32#include <qcombobox.h>
32#include <qlineedit.h> 33#include <qlineedit.h>
33#include <qtimer.h> 34#include <qtimer.h>
34#include <qpoint.h>
35#include <qpopupmenu.h> 35#include <qpopupmenu.h>
36 36
37#include <qpe/config.h> 37#include <qpe/config.h>
@@ -50,6 +50,27 @@ namespace {
50 static const int RowHeight = 20; 50 static const int RowHeight = 20;
51} 51}
52 52
53TableView::EditorWidget::EditorWidget() : m_wid(0l), m_row(-1), m_col(-1) {
54}
55void TableView::EditorWidget::setCellWidget(QWidget* wid, int row, int col ) {
56 m_wid = wid;
57 m_row = row;
58 m_col = col;
59}
60void TableView::EditorWidget::releaseCellWidget() {
61 m_wid = 0;
62 m_row = m_col = -1;
63}
64QWidget* TableView::EditorWidget::cellWidget()const {
65 return m_wid;
66}
67int TableView::EditorWidget::cellRow()const {
68 return m_row;
69}
70int TableView::EditorWidget::cellCol()const {
71 return m_col;
72}
73
53 74
54void TableView::initConfig() { 75void TableView::initConfig() {
55 Config config( "todo" ); 76 Config config( "todo" );
@@ -143,11 +164,24 @@ QString TableView::type() const {
143 return QString::fromLatin1( tr("Table View") ); 164 return QString::fromLatin1( tr("Table View") );
144} 165}
145int TableView::current() { 166int TableView::current() {
146 if (numRows() == 0 ) return 1; 167 if (numRows() == 0 ) return 0;
147 int uid = sorted().uidAt(currentRow() ); 168 int uid = sorted().uidAt(currentRow() );
148 169
149 return uid; 170 return uid;
150} 171}
172int TableView::next() {
173 if ( numRows() == 0 ) return 0;
174 if ( currentRow() + 1 >= numRows() ) return 0;
175 setCurrentCell( currentRow() +1, currentColumn() );
176 return sorted().uidAt( currentRow() );
177}
178int TableView::prev() {
179 if ( numRows() == 0 ) return 0;
180 if ( currentRow() - 1 < 0 ) return 0;
181 setCurrentCell( currentRow() -1, currentColumn() );
182 return sorted().uidAt( currentRow() );
183
184}
151QString TableView::currentRepresentation() { 185QString TableView::currentRepresentation() {
152 OTodo to = sorted()[currentRow()]; 186 OTodo to = sorted()[currentRow()];
153 return to.summary().isEmpty() ? to.description().left(20) : to.summary() ; 187 return to.summary().isEmpty() ? to.description().left(20) : to.summary() ;
@@ -219,11 +253,11 @@ void TableView::removeEvent( int ) {
219 updateView(); 253 updateView();
220} 254}
221void TableView::setShowCompleted( bool b) { 255void TableView::setShowCompleted( bool b) {
222 qWarning("Show Completed %d" + b ); 256 qWarning("Show Completed %d" , b );
223 updateView(); 257 updateView();
224} 258}
225void TableView::setShowDeadline( bool b ) { 259void TableView::setShowDeadline( bool b ) {
226 qWarning( "Show DeadLine %d" + b ); 260 qWarning( "Show DeadLine %d" , b );
227 if ( b ) 261 if ( b )
228 showColumn( 3 ); 262 showColumn( 3 );
229 else 263 else
@@ -259,6 +293,13 @@ void TableView::clear() {
259} 293}
260void TableView::slotClicked(int row, int col, int, 294void TableView::slotClicked(int row, int col, int,
261 const QPoint& point) { 295 const QPoint& point) {
296 if ( m_editorWidget.cellWidget() ) {
297 //setCellContentFromEditor(m_editorWidget.cellRow(), m_editorWidget.cellCol() );
298 endEdit(m_editorWidget.cellRow(), m_editorWidget.cellCol(),
299 true, true );
300 m_editorWidget.releaseCellWidget();
301 }
302
262 if ( !cellGeometry(row, col ).contains(point ) ) 303 if ( !cellGeometry(row, col ).contains(point ) )
263 return; 304 return;
264 305
@@ -280,7 +321,11 @@ void TableView::slotClicked(int row, int col, int,
280 } 321 }
281 break; 322 break;
282 323
283 case 1: 324 // Priority emit a double click...
325 case 1:{
326 QWidget* wid = beginEdit( row, col, FALSE );
327 m_editorWidget.setCellWidget( wid, row, col );
328 }
284 break; 329 break;
285 330
286 case 2: { 331 case 2: {
@@ -446,6 +491,7 @@ QWidget* TableView::createEditor(int row, int col, bool )const {
446 } 491 }
447} 492}
448void TableView::setCellContentFromEditor(int row, int col ) { 493void TableView::setCellContentFromEditor(int row, int col ) {
494 qWarning("set cell content from editor");
449 if ( col == 1 ) { 495 if ( col == 1 ) {
450 QWidget* wid = cellWidget(row, 1 ); 496 QWidget* wid = cellWidget(row, 1 );
451 if ( wid->inherits("QComboBox") ) { 497 if ( wid->inherits("QComboBox") ) {
@@ -542,13 +588,41 @@ void TableView::contentsMouseMoveEvent( QMouseEvent* e ) {
542 QTable::contentsMouseMoveEvent( e ); 588 QTable::contentsMouseMoveEvent( e );
543} 589}
544void TableView::keyPressEvent( QKeyEvent* event) { 590void TableView::keyPressEvent( QKeyEvent* event) {
591 if ( m_editorWidget.cellWidget() ) {
592// setCellContentFromEditor(m_editorWidget.cellRow(), m_editorWidget.cellCol() );
593 endEdit(m_editorWidget.cellRow(), m_editorWidget.cellCol(),
594 true, true );
595 m_editorWidget.releaseCellWidget();
596 setFocus();
597 }
598 int row = currentRow();
599 int col = currentColumn();
600
601 char key = ::toupper( event->ascii() );
602 /* let QTable also handle the d later */
603 if ( key == 'D' )
604 removeQuery( sorted().uidAt( row ) );
605
606
545 switch( event->key() ) { 607 switch( event->key() ) {
546 case Qt::Key_F33: 608 case Qt::Key_F33:
547 case Qt::Key_Enter: 609 case Qt::Key_Enter:
548 case Qt::Key_Return: 610 case Qt::Key_Return:
549 showTodo( sorted().uidAt( currentRow() ) ); 611 case Qt::Key_Space:
612 if ( col == 0 ) {
613 TodoView::complete(sorted()[row]);
614 }else if ( col == 1 ) {
615 QWidget* wid = beginEdit(row, col, FALSE );
616 m_editorWidget.setCellWidget( wid, row, col );
617 }else if ( col == 2 ) {
618 showTodo( sorted().uidAt( currentRow() ) );
619 }else if ( col == 3 ) {
620 TodoView::edit( sorted().uidAt(row) );
621 }
622
550 break; 623 break;
551 default: 624 default:
552 QTable::keyPressEvent( event ); 625 QTable::keyPressEvent( event );
553 } 626 }
554} 627}
628