From f11d4bda64b58abfebf77485d5d77143a10dc8c9 Mon Sep 17 00:00:00 2001 From: zecke Date: Mon, 07 Oct 2002 11:39:30 +0000 Subject: Re add files for todo --- (limited to 'core/pim/todo/tableitems.cpp') diff --git a/core/pim/todo/tableitems.cpp b/core/pim/todo/tableitems.cpp new file mode 100644 index 0000000..ebfefc8 --- a/dev/null +++ b/core/pim/todo/tableitems.cpp @@ -0,0 +1,181 @@ +/* +               =. This file is part of the OPIE Project +             .=l. Copyright (c) 2002 <> +           .>+-= + _;:,     .>    :=|. This program is free software; you can +.> <`_,   >  .   <= redistribute it and/or modify it under +:`=1 )Y*s>-.--   : the terms of the GNU General Public +.="- .-=="i,     .._ License as published by the Free Software + - .   .-<_>     .<> Foundation; either version 2 of the License, +     ._= =}       : or (at your option) any later version. +    .%`+i>       _;_. +    .i_,=:_.      -`: PARTICULAR PURPOSE. See the GNU +..}^=.=       =       ; Library General Public License for more +++=   -.     .`     .: details. + :     =  ...= . :.=- + -.   .:....=;==+<; You should have received a copy of the GNU +  -_. . .   )=.  = Library General Public License along with +    --        :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ +#include "tableview.h" + +#include "tableitems.h" +#include + +using namespace Todo; + +CheckItem::CheckItem( QTable* t, + const QString& sortKey, + int uid, + const QArray& lis) + : OCheckItem(t, sortKey), m_uid(uid ), m_cat( lis ) +{ +} +CheckItem::~CheckItem() { +} +void CheckItem::setChecked( bool b ) { + OCheckItem::setChecked(b); +} +void CheckItem::toggle() { + TableView* view = static_cast( table() ); + OTodo ev = view->find( view->current() ); + ev.setCompleted(!isChecked() ); + view->updateFromTable( ev ); + + OCheckItem::toggle(); + table()->updateCell( row(), col() ); +} +int CheckItem::uid() const { + return m_uid; +} +QArray CheckItem::cats() { + return m_cat; +} + +/* ComboItem */ +ComboItem::ComboItem( QTable* t, EditType et ) + : QTableItem( t, et, "3" ), m_cb(0) +{ + setReplaceable( FALSE ); +} +ComboItem::~ComboItem() { + +} +QWidget* ComboItem::createEditor()const { + qWarning( "create editor"); + QString txt = text(); + + ( (ComboItem*)this)-> m_cb = new QComboBox( table()->viewport() ); + + m_cb->insertItem( "1" ); + m_cb->insertItem( "2" ); + m_cb->insertItem( "3" ); + m_cb->insertItem( "4" ); + m_cb->insertItem( "5" ); + m_cb->setCurrentItem( txt.toInt() - 1 ); + + return m_cb; +} +void ComboItem::setContentFromEditor( QWidget* w) { + TableView* view = static_cast( table() ); + OTodo ev = view->find( view->current() ); + + if ( w->inherits( "QComboBox" ) ) + setText( ( (QComboBox*)w )->currentText() ); + else + QTableItem::setContentFromEditor( w ); + + ev.setPriority( text().toInt() ); + view->updateFromTable( ev ); +} +void ComboItem::setText( const QString& s ) { + if ( m_cb ) + m_cb->setCurrentItem( s.toInt()-1 ); + + QTableItem::setText( s ); +} +QString ComboItem::text()const { + if ( m_cb) + return m_cb->currentText(); + + return QTableItem::text(); +} + +/* TodoTextItem */ +TodoTextItem::~TodoTextItem() { + +} +TodoTextItem::TodoTextItem( QTable* t, + const QString& string ) + : QTableItem( t, QTableItem::Never, string ) +{} + +/* DueTextItem */ +DueTextItem::DueTextItem( QTable* t, const OTodo& ev) + : QTableItem(t, Never, QString::null ) +{ + setToDoEvent( ev ); +} +DueTextItem::~DueTextItem() { + +} +QString DueTextItem::key() const { + QString key; + + if( m_hasDate ){ + if(m_off == 0 ){ + key.append("b"); + }else if( m_off > 0 ){ + key.append("c"); + }else if( m_off < 0 ){ + key.append("a"); + } + key.append(QString::number(m_off ) ); + }else{ + key.append("d"); + } + return key; +} +void DueTextItem::setCompleted( bool comp ) { + m_completed = comp; + table()->updateCell( row(), col() ); +} +void DueTextItem::setToDoEvent( const OTodo& ev ) { + m_hasDate = ev.hasDueDate(); + m_completed = ev.isCompleted(); + + if( ev.hasDueDate() ){ + QDate today = QDate::currentDate(); + m_off = today.daysTo(ev.dueDate() ); + setText( QString::number(m_off) + " day(s) " ); + }else{ + setText("n.d." ); + m_off = 0; + } +} +void DueTextItem::paint( QPainter* p, const QColorGroup &cg, + const QRect& cr, bool selected ) { + QColorGroup cg2(cg); + + QColor text = cg.text(); + if( m_hasDate && !m_completed ){ + if( m_off < 0 ){ + cg2.setColor(QColorGroup::Text, QColor(red ) ); + }else if( m_off == 0 ){ + cg2.setColor(QColorGroup::Text, QColor(yellow) ); // orange isn't predefined + }else if( m_off > 0){ + cg2.setColor(QColorGroup::Text, QColor(green ) ); + } + } + QTableItem::paint(p, cg2, cr, selected ); + /* restore default color */ + cg2.setColor(QColorGroup::Text, text ); +} -- cgit v0.9.0.2