summaryrefslogtreecommitdiff
path: root/core/pim/todo
authorzecke <zecke>2002-10-23 21:07:13 (UTC)
committer zecke <zecke>2002-10-23 21:07:13 (UTC)
commit71f52c08e595cb3bfa3697baa97b4279325fa9ac (patch) (side-by-side diff)
treec33c935ea2da643c5c08ef564898a76a66ebd951 /core/pim/todo
parent60bd9ae80a48f1e2bbd1e1d75a53de0039e979d0 (diff)
downloadopie-71f52c08e595cb3bfa3697baa97b4279325fa9ac.zip
opie-71f52c08e595cb3bfa3697baa97b4279325fa9ac.tar.gz
opie-71f52c08e595cb3bfa3697baa97b4279325fa9ac.tar.bz2
Fix not beeing resizable.. now the Deadline is too wide...
Fix a crash when being somewhere else but releasing the mouse over the table bug Fix one more thing I don't remember Add InlineEditing of summaries. It would actually work on double click but we use the single click for viewing.. Ok these things need to be configurable
Diffstat (limited to 'core/pim/todo') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/tableview.cpp174
1 files changed, 98 insertions, 76 deletions
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp
index c4165db..6299113 100644
--- a/core/pim/todo/tableview.cpp
+++ b/core/pim/todo/tableview.cpp
@@ -24,12 +24,13 @@
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <stdlib.h>
+#include <qlineedit.h>
#include <qtimer.h>
#include <qpoint.h>
#include <qpopupmenu.h>
#include "mainwindow.h"
//#include "tableitems.h"
@@ -50,25 +51,27 @@ TableView::TableView( MainWindow* window, QWidget* wid )
m_enablePaint = false;
setNumRows(0);
setNumCols(4);
setSorting( TRUE );
setSelectionMode( NoSelection );
- setColumnStretchable( 2, TRUE );
+// setColumnStretchable( 2, TRUE );
+ setColumnStretchable( 3, FALSE );
setColumnWidth(0, 20 );
setColumnWidth(1, 35 );
+ setColumnWidth(3, 18 );
setLeftMargin( 0 );
verticalHeader()->hide();
horizontalHeader()->setLabel(0, tr("C.") );
horizontalHeader()->setLabel(1, tr("Prior.") );
horizontalHeader()->setLabel(2, tr("Description" ) );
- setColumnStretchable(3, FALSE );
- setColumnWidth(3, 20 );
+// setColumnStretchable(3, FALSE );
+
horizontalHeader()->setLabel(3, tr("Deadline") );
if ( todoWindow()->showDeadline() )
showColumn( 3);
else
hideColumn(3 );
@@ -308,84 +311,84 @@ void TableView::paintCell(QPainter* p, int row, int col, const QRect& cr, bool
QFont f = p->font();
QFontMetrics fm(f);
switch(col) {
case 0:
- {
- // completed field
- int marg = ( cr.width() - BoxSize ) / 2;
- int x = 0;
- int y = ( cr.height() - BoxSize ) / 2;
- p->setPen( QPen( cg.text() ) );
- p->drawRect( x + marg, y, BoxSize, BoxSize );
- p->drawRect( x + marg+1, y+1, BoxSize-2, BoxSize-2 );
- p->setPen( darkGreen );
- x += 1;
- y += 1;
- if ( task.isCompleted() ) {
- QPointArray a( 9*2 );
- int i, xx, yy;
- xx = x+2+marg;
- yy = y+4;
- for ( i=0; i<4; i++ ) {
- a.setPoint( 2*i, xx, yy );
- a.setPoint( 2*i+1, xx, yy+2 );
- xx++; yy++;
- }
- yy -= 2;
- for ( i=4; i<9; i++ ) {
- a.setPoint( 2*i, xx, yy );
- a.setPoint( 2*i+1, xx, yy+2 );
- xx++; yy--;
- }
- p->drawLineSegments( a );
- }
- }
- break;
- case 1:
- // priority field
- {
- QString text = QString::number(task.priority());
- p->drawText(2,2 + fm.ascent(), text);
- }
- break;
- case 2:
- // description field
- {
- QString text = task.summary().isEmpty() ?
- task.description() :
- task.summary();
- p->drawText(2,2 + fm.ascent(), text);
- }
- break;
- case 3:
- {
- QString text;
- if (task.hasDueDate()) {
- int off = QDate::currentDate().daysTo( task.dueDate() );
- text = QString::number(off) + tr(" day(s)");
- /*
- * set color if not completed
- */
- if (!task.isCompleted() ) {
- QColor color = Qt::black;
- if ( off < 0 )
- color = Qt::red;
- else if ( off == 0 )
- color = Qt::yellow;
- else if ( off > 0 )
- color = Qt::green;
- p->setPen(color );
- }
- } else {
- text = tr("None");
- }
- p->drawText(2,2 + fm.ascent(), text);
- }
- break;
+ {
+ // completed field
+ int marg = ( cr.width() - BoxSize ) / 2;
+ int x = 0;
+ int y = ( cr.height() - BoxSize ) / 2;
+ p->setPen( QPen( cg.text() ) );
+ p->drawRect( x + marg, y, BoxSize, BoxSize );
+ p->drawRect( x + marg+1, y+1, BoxSize-2, BoxSize-2 );
+ p->setPen( darkGreen );
+ x += 1;
+ y += 1;
+ if ( task.isCompleted() ) {
+ QPointArray a( 9*2 );
+ int i, xx, yy;
+ xx = x+2+marg;
+ yy = y+4;
+ for ( i=0; i<4; i++ ) {
+ a.setPoint( 2*i, xx, yy );
+ a.setPoint( 2*i+1, xx, yy+2 );
+ xx++; yy++;
+ }
+ yy -= 2;
+ for ( i=4; i<9; i++ ) {
+ a.setPoint( 2*i, xx, yy );
+ a.setPoint( 2*i+1, xx, yy+2 );
+ xx++; yy--;
+ }
+ p->drawLineSegments( a );
+ }
+ }
+ break;
+ case 1:
+ // priority field
+ {
+ QString text = QString::number(task.priority());
+ p->drawText(2,2 + fm.ascent(), text);
+ }
+ break;
+ case 2:
+ // description field
+ {
+ QString text = task.summary().isEmpty() ?
+ task.description() :
+ task.summary();
+ p->drawText(2,2 + fm.ascent(), text);
+ }
+ break;
+ case 3:
+ {
+ QString text;
+ if (task.hasDueDate()) {
+ int off = QDate::currentDate().daysTo( task.dueDate() );
+ text = QString::number(off) + tr(" day(s)");
+ /*
+ * set color if not completed
+ */
+ if (!task.isCompleted() ) {
+ QColor color = Qt::black;
+ if ( off < 0 )
+ color = Qt::red;
+ else if ( off == 0 )
+ color = Qt::yellow;
+ else if ( off > 0 )
+ color = Qt::green;
+ p->setPen(color );
+ }
+ } else {
+ text = tr("None");
+ }
+ p->drawText(2,2 + fm.ascent(), text);
+ }
+ break;
}
p->restore();
}
QWidget* TableView::createEditor(int row, int col, bool )const {
switch( col ) {
case 1: {
@@ -396,12 +399,18 @@ QWidget* TableView::createEditor(int row, int col, bool )const {
combo->insertItem( "3" );
combo->insertItem( "4" );
combo->insertItem( "5" );
combo->setCurrentItem( sorted()[row].priority()-1 );
return combo;
}
+ /* summary */
+ case 2:{
+ QLineEdit* edit = new QLineEdit( viewport() );
+ edit->setText( sorted()[row].summary() );
+ return edit;
+ }
case 0:
default:
return 0l;
}
}
void TableView::setCellContentFromEditor(int row, int col ) {
@@ -413,12 +422,23 @@ void TableView::setCellContentFromEditor(int row, int col ) {
if ( todo.priority() != pri ) {
todo.setPriority( pri );
TodoView::update( todo.uid(), todo );
updateView();
}
}
+ }else if ( col == 2) {
+ QWidget* wid = cellWidget(row, 2);
+ if ( wid->inherits("QLineEdit") ) {
+ QString text = ((QLineEdit*)wid)->text();
+ OTodo todo = sorted()[row];
+ if ( todo.summary() != text ) {
+ todo.setSummary( text );
+ TodoView::update( todo.uid(), todo );
+ updateView();
+ }
+ }
}
}
void TableView::slotPriority() {
setCellContentFromEditor( currentRow(), currentColumn() );
}
/*
@@ -426,12 +446,13 @@ void TableView::slotPriority() {
* filled enough.
* We will try to read ahead 4 items in both ways
* up and down. On odd or even we will currentRow()+-4 or +-9
*
*/
void TableView::timerEvent( QTimerEvent* ev ) {
+ qWarning("sorted %d", sorted().count() );
if (sorted().count() == 0 )
return;
int row = currentRow();
if ( m_row ) {
int ro = row-4;
@@ -463,14 +484,15 @@ void TableView::timerEvent( QTimerEvent* ev ) {
* Then we check if they're some pixel horizontal away
* if the distance between the two points is greater than
* 8 we mark the underlying todo as completed and do a repaint
*/
void TableView::contentsMouseReleaseEvent( QMouseEvent* e) {
int row = rowAt(m_prevP.y());
- if ( row == rowAt( e->y() ) ) {
+ if ( row == rowAt( e->y() ) && row != -1 ) {
if ( abs( m_prevP.x() - e->x() ) >= 8 ) {
+ qWarning("current row %d", row );
OTodo todo = sorted()[row];
todo.setCompleted( !todo.isCompleted() );
TodoView::update( todo.uid(), todo );
updateView();
return;
}