-rw-r--r-- | core/pim/todo/mainwindow.cpp | 3 | ||||
-rw-r--r-- | core/pim/todo/tableitems.cpp | 4 | ||||
-rw-r--r-- | core/pim/todo/tableview.cpp | 233 | ||||
-rw-r--r-- | core/pim/todo/tableview.h | 44 | ||||
-rw-r--r-- | core/pim/todo/todoview.h | 2 |
5 files changed, 126 insertions, 160 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index 47c0160..7e7d2f7 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp @@ -483,3 +483,4 @@ void MainWindow::slotDeleteCompleted() { - m_todoMgr.remove( currentView()->completed() ); + // FIXME + //m_todoMgr.remove( currentView()->completed() ); currentView()->updateView( ); diff --git a/core/pim/todo/tableitems.cpp b/core/pim/todo/tableitems.cpp index ebfefc8..86fe07d 100644 --- a/core/pim/todo/tableitems.cpp +++ b/core/pim/todo/tableitems.cpp @@ -50,3 +50,3 @@ void CheckItem::toggle() { ev.setCompleted(!isChecked() ); - view->updateFromTable( ev ); + //view->updateFromTable( ev ); @@ -96,3 +96,3 @@ void ComboItem::setContentFromEditor( QWidget* w) { ev.setPriority( text().toInt() ); - view->updateFromTable( ev ); + //view->updateFromTable( ev ); } diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp index eaaf1bc..5594b13 100644 --- a/core/pim/todo/tableview.cpp +++ b/core/pim/todo/tableview.cpp @@ -38,2 +38,7 @@ using namespace Todo; +namespace { + static const int BoxSize = 14; + static const int RowHeight = 20; +} + @@ -102,23 +107,2 @@ void TableView::slotShowMenu() { } -OTodo TableView::find(int uid ) { - OTodo ev = TodoView::event( uid ); - return ev; -} -void TableView::updateFromTable( const OTodo& ev, CheckItem* item ) { - TodoView::update( ev.uid(), ev ); - - /* update the other columns */ - /* if completed or not we need to update - * the table - * - * We've two cases - * either item or !item - * this makes cases more easy - */ - if ( !item ) { - item = m_cache[ev.uid()]; - } - DueTextItem *due = dueItem( item->row() ); - due->setCompleted( ev.isCompleted() ); -} QString TableView::type() const { @@ -128,6 +112,3 @@ int TableView::current() { int cur = 0; - CheckItem* i = checkItem( currentRow() ); - if (i ) - cur = i->uid(); - + // FIXME return cur; @@ -150,2 +131,3 @@ void TableView::updateView( ) { end = sorted().end(); + qWarning("setTodos"); @@ -156,8 +138,3 @@ void TableView::updateView( ) { viewport()->setUpdatesEnabled( false ); - clear(); - QString currentCat = todoWindow()->currentCategory(); - bool showCompleted = todoWindow()->showCompleted(); - bool showOverDue = todoWindow()->showOverDue(); - qWarning( "Current Category:" + todoWindow()->currentCategory() ); - int id = todoWindow()->currentCatId(); + QTime t; @@ -165,24 +142,2 @@ void TableView::updateView( ) { setNumRows( it.count() ); - uint i = 0; - for (; it != end; ++it ) { - OTodo todo = (*it); - /* test if the categories match */ - if ( !currentCat.isEmpty() && - !todo.categories().contains( id ) ) { - continue; - } - /* the item is completed but we shouldn't show it */ - if ( !showCompleted && todo.isCompleted() ) { - qWarning("isCompleted "); - continue; - } - /* the item is not overdue but we should only show overdue */ - if ( showOverDue && !todo.isOverdue() ) { - continue; - } - /* now it's fine to add it */ - insertTodo( todo, i ); - i++; - } - setNumRows( i ); int elc = time.elapsed(); @@ -192,2 +147,3 @@ void TableView::updateView( ) { viewport()->update(); + m_enablePaint = true; @@ -196,31 +152,12 @@ void TableView::updateView( ) { } -void TableView::setTodo( int uid, const OTodo& ev ) { - QMap<int, CheckItem*>::Iterator it = m_cache.find( uid ); - - if ( it != m_cache.end() ) { - int row = it.data()->row(); - - /* update checked */ - CheckItem* check = checkItem(row ); - if (check) - check->setChecked( ev.isCompleted() ); - - /* update the text */ - QString sum = ev.summary(); - setText(row, 2, sum.isEmpty() ? - ev.description().left(40).simplifyWhiteSpace() : - sum ); - - /* update priority */ - setText(row, 1, QString::number( ev.priority() ) ); +void TableView::setTodo( int, const OTodo&) { + sort(); - /* update DueDate */ - DueTextItem *due = dueItem( row ); - due->setToDoEvent( ev ); - } + /* repaint */ + QTable::update(); } -void TableView::addEvent( const OTodo& ev) { - int row= numRows(); - setNumRows( row + 1 ); - insertTodo( ev, row ); +void TableView::addEvent( const OTodo&) { + sort(); + + QTable::update(); } @@ -231,3 +168,3 @@ void TableView::addEvent( const OTodo& ev) { void TableView::replaceEvent( const OTodo& ev) { - setTodo( ev.uid(), ev ); + addEvent( ev ); } @@ -239,3 +176,2 @@ void TableView::replaceEvent( const OTodo& ev) { void TableView::removeEvent( int ) { - clear(); updateView(); @@ -258,27 +194,3 @@ void TableView::setShowCategory( const QString& ) { void TableView::clear() { - m_cache.clear(); - int rows = numRows(); - for (int r = 0; r < rows; r++ ) { - for (int c = 0; c < numCols(); c++ ) { - if ( cellWidget(r, c) ) - clearCellWidget(r, c ); - clearCell(r, c); - } - } - setNumRows( 0); -} -QArray<int> TableView::completed() { - int row = numRows(); - QArray<int> ids( row ); - - int j=0; - for (int i = 0; i < row; i++ ) { - CheckItem* item = checkItem(i ); - if (item->isChecked() ) { - ids[j] = item->uid(); - j++; - } - } - ids.resize( j ); - return ids; + setNumRows(0); } @@ -288,2 +200,3 @@ void TableView::slotClicked(int row, int col, int, return; + int ui=0; // FIXME = uid(row); @@ -292,3 +205,4 @@ void TableView::slotClicked(int row, int col, int, case 0: { - CheckItem* item = checkItem( row ); + // FIXME + CheckItem* item = 0l; /* @@ -315,3 +229,3 @@ void TableView::slotClicked(int row, int col, int, m_menuTimer->stop(); - showTodo( checkItem(row)->uid() ); + showTodo( ui ); break; @@ -320,3 +234,3 @@ void TableView::slotClicked(int row, int col, int, m_menuTimer->stop(); - TodoView::edit( checkItem(row)->uid() ); + TodoView::edit( ui ); break; @@ -340,13 +254,2 @@ void TableView::slotCurrentChanged(int, int ) { } -/* - * hardcode to column 0 - */ -CheckItem* TableView::checkItem( int row ) { - CheckItem *i = static_cast<CheckItem*>( item( row, 0 ) ); - return i; -} -DueTextItem* TableView::dueItem( int row ) { - DueTextItem* i = static_cast<DueTextItem*> ( item(row, 3 ) ); - return i; -} QWidget* TableView::widget() { @@ -358,2 +261,4 @@ QWidget* TableView::widget() { * based + * We event want to set the setOrder + * to a sort() and update() */ @@ -368 +273,87 @@ void TableView::viewportPaintEvent( QPaintEvent* e) { } +/* + * This segment is copyrighted by TT + * it was taken from their todolist + * application this code is GPL + */ +void TableView::paintCell(QPainter* p, int row, int col, const QRect& cr, bool ) { + const QColorGroup &cg = colorGroup(); + + p->save(); + + OTodo task = sorted()[row]; + + p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Base ) ); + + QPen op = p->pen(); + p->setPen(cg.mid()); + p->drawLine( 0, cr.height() - 1, cr.width() - 1, cr.height() - 1 ); + p->drawLine( cr.width() - 1, 0, cr.width() - 1, cr.height() - 1 ); + p->setPen(op); + + 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()) { + text = "HAS"; + } else { + text = tr("None"); + } + p->drawText(2,2 + fm.ascent(), text); + } + break; + } + p->restore(); +} diff --git a/core/pim/todo/tableview.h b/core/pim/todo/tableview.h index 1fa21b2..b608204 100644 --- a/core/pim/todo/tableview.h +++ b/core/pim/todo/tableview.h @@ -48,4 +48,2 @@ namespace Todo { - void updateFromTable( const OTodo&, CheckItem* = 0 ); - OTodo find(int uid); @@ -55,2 +53,3 @@ namespace Todo { + void clear(); void showOverDue( bool ); @@ -65,7 +64,13 @@ namespace Todo { void setShowCategory(const QString& =QString::null ); - void clear(); void newDay(); - QArray<int> completed(); QWidget* widget(); void sortColumn(int, bool, bool ); + + /* + * we do our drawing ourselves + * because we don't want to have + * 40.000 QTableItems for 10.000 + * OTodos where we only show 10 at a time! + */ + void paintCell(QPainter* p, int row, int col, const QRect&, bool ); private: @@ -73,7 +78,3 @@ namespace Todo { void viewportPaintEvent( QPaintEvent* ); - inline void insertTodo( const OTodo&, int row ); - CheckItem* checkItem( int row ); - DueTextItem* dueItem( int row ); QTimer *m_menuTimer; - QMap<int, CheckItem*> m_cache; bool m_enablePaint:1; @@ -89,29 +90,2 @@ private slots: }; - inline void TableView::insertTodo( const OTodo& event, int row ) { - - - QString sortKey = (char) ( (event.isCompleted() ? 'a' : 'A' ) - + event.priority() ) - + Qtopia::buildSortKey( event.description() ); - CheckItem *chk = new CheckItem( this, sortKey, event.uid(), event.categories() ); - chk->setChecked( event.isCompleted() ); - - ComboItem *cmb = new ComboItem(this, QTableItem::WhenCurrent ); - cmb->setText( QString::number( event.priority() ) ); - - QString sum = event.summary(); - QTableItem* ti = new TodoTextItem( this, sum.isEmpty() ? - event.description().left(40).simplifyWhiteSpace() : - sum ); - ti->setReplaceable( FALSE ); - - DueTextItem *due = new DueTextItem(this, event ); - - setItem( row, 0, chk ); - setItem( row, 1, cmb ); - setItem( row, 2, ti ); - setItem( row, 3, due ); - - m_cache.insert( event.uid(), chk ); - } }; diff --git a/core/pim/todo/todoview.h b/core/pim/todo/todoview.h index 81ace3a..9408ef1 100644 --- a/core/pim/todo/todoview.h +++ b/core/pim/todo/todoview.h @@ -104,3 +104,3 @@ namespace Todo { virtual void clear() = 0; - virtual QArray<int> completed() = 0; +/* virtual QArray<int> completed() = 0; */ virtual void newDay() = 0; |