author | zautrix <zautrix> | 2005-10-24 18:01:08 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-10-24 18:01:08 (UTC) |
commit | 9b626f37040b4da2a23cdce2d9241218b84d3d88 (patch) (side-by-side diff) | |
tree | bab5b6f2978610c4be1c105a7c3388337621d7c3 /korganizer | |
parent | ae59704dc0643963d0ed648baf7186b741c3ecb2 (diff) | |
download | kdepimpi-9b626f37040b4da2a23cdce2d9241218b84d3d88.zip kdepimpi-9b626f37040b4da2a23cdce2d9241218b84d3d88.tar.gz kdepimpi-9b626f37040b4da2a23cdce2d9241218b84d3d88.tar.bz2 |
fixx
-rw-r--r-- | korganizer/kotodoviewitem.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp index 848e9e7..519bb16 100644 --- a/korganizer/kotodoviewitem.cpp +++ b/korganizer/kotodoviewitem.cpp @@ -1,377 +1,386 @@ /* This file is part of KOrganizer. Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <klocale.h> #include <kdebug.h> #include <qapp.h> #include <kglobal.h> #include <kiconloader.h> #include "kotodoviewitem.h" #include "kotodoview.h" #include "koprefs.h" KOTodoViewItem::KOTodoViewItem( QListView *parent, Todo *todo, KOTodoView *kotodo) : QCheckListItem( parent , "", CheckBox ), mTodo( todo ), mTodoView( kotodo ) { construct(); } KOTodoViewItem::KOTodoViewItem( KOTodoViewItem *parent, Todo *todo, KOTodoView *kotodo ) : QCheckListItem( parent, "", CheckBox ), mTodo( todo ), mTodoView( kotodo ) { construct(); } QString KOTodoViewItem::key(int column,bool) const { + if ( column == 0 ) + return text(0).lower(); + if ( column == 1 ) { + if ( mTodo->isCompleted() ) { + return "6"+QString::number(mTodo->priority())+text(0).lower(); + } + return QString::number(mTodo->priority())+text(0).lower(); + } QMap<int,QString>::ConstIterator it = mKeyMap.find(column); if (it == mKeyMap.end()) { return text(column).lower(); } else { + if ( column == 2 ) { + return *it+text(0).lower(); + } return *it; } } void KOTodoViewItem:: setup() { int h = 20; if ( listView () ) { QFontMetrics fm ( listView ()->font () ); h = fm.height(); } setHeight( h ); } void KOTodoViewItem::setSortKey(int column,const QString &key) { mKeyMap.insert(column,key); } #if QT_VERSION >= 0x030000 void KOTodoViewItem::paintBranches(QPainter *p,const QColorGroup & cg,int w, int y,int h) { QListViewItem::paintBranches(p,cg,w,y,h); } #else #endif void KOTodoViewItem::construct() { // qDebug("KOTodoViewItem::construct() "); m_init = true; QString keyd = "=="; QString keyt = "=="; QString skeyd = "=="; QString skeyt = "=="; setOn(mTodo->isCompleted()); setText(0,mTodo->summary()); setText(1,QString::number(mTodo->priority())); setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); if (mTodo->percentComplete()<100) { - if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); - else setSortKey(2,QString::number(mTodo->percentComplete())); + setSortKey(2,QString::number(mTodo->percentComplete())); } else { - if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); - else setSortKey(2,QString::number(99)); + setSortKey(2,"999"); } if (mTodo->hasDueDate()) { setText(3, mTodo->dtDueDateStr()); QDate d = mTodo->dtDue().date(); keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); // setSortKey(3,keyd); if (mTodo->doesFloat()) { setText(4,""); } else { setText(4,mTodo->dtDueTimeStr()); QTime t = mTodo->dtDue().time(); keyt.sprintf("%02d%02d",t.hour(),t.minute()); //setSortKey(4,keyt); } } else { setText(3,""); setText(4,""); } setSortKey(3,keyd); setSortKey(4,keyt); - +#if 0 if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt); else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); - +#endif keyd = ""; keyt = ""; if (mTodo->isRunning() ) { QDate d = mTodo->runStart().date(); QTime t = mTodo->runStart().time(); skeyt.sprintf("%02d%02d",t.hour(),t.minute()); skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); keyd = KGlobal::locale()->formatDate( d , true); keyt = KGlobal::locale()->formatTime( t ); } else { if (mTodo->hasStartDate()) { keyd = mTodo->dtStartDateStr(); QDate d = mTodo->dtStart().date(); skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); if ( !mTodo->doesFloat()) { keyt = mTodo->dtStartTimeStr(); QTime t = mTodo->dtStart().time(); skeyt.sprintf("%02d%02d",t.hour(),t.minute()); } } } setText(5,keyd); setText(6,keyt); setSortKey(5,skeyd); setSortKey(6,skeyt); //setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No")); setText(7,mTodo->categoriesStr()); setText(8,KOPrefs::instance()->calName( mTodo->calID())); setText(9, KGlobal::locale()->formatDateTime( mTodo->lastModified(), true, true )); setText(10, KGlobal::locale()->formatDateTime( mTodo->created(), true, true )); setText(11, KGlobal::locale()->formatDateTime( mTodo->lastModifiedSub(), true, true )); QString key; QDate d; QTime t; setSortKey(9,mTodo->lastModifiedSortKey()); d = mTodo->created().date(); t = mTodo->created().time(); key.sprintf("%04d%02d%02d%02d%02d%02d",d.year(),d.month(),d.day(),t.hour(),t.minute(),t.second() ); setSortKey(10,key); setSortKey(11,mTodo->lastModifiedSubSortKey()); #if 0 // Find sort id in description. It's the text behind the last '#' character // found in the description. White spaces are removed from beginning and end // of sort id. int pos = mTodo->description().findRev('#'); if (pos < 0) { setText(6,""); } else { QString str = mTodo->description().mid(pos+1); str.stripWhiteSpace(); setText(6,str); } #endif m_known = false; m_init = false; setMyPixmap(); } void KOTodoViewItem::setMyPixmap() { int size = 5; QPixmap pixi = QPixmap( 1, 1 ); // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) { // pixi = SmallIcon("redcross16"); // } else { QPainter p; int pixSize = 0; QPixmap pPix = QPixmap( size, size ); if ( mTodo->description().length() > 0 ) { pixi.resize(size, pixSize+size); pPix.fill( Qt::darkGreen ); p.begin( &pixi ); p. drawPixmap ( 0, pixSize, pPix); p.end(); pixSize += size; } if ( mTodo->isAlarmEnabled() && mTodo->alarmEnabled()) { pixi.resize(size, pixSize+size); pPix.fill( Qt::red ); p.begin( &pixi ); p. drawPixmap ( 0, pixSize, pPix); p.end(); pixSize += size; } if ( mTodo->doesRecur() ) { pixi.resize(size, pixSize+size); pPix.fill( Qt::blue ); p.begin( &pixi ); p. drawPixmap ( 0, pixSize, pPix); p.end(); pixSize += size; } // } if ( pixi.width() > 1 ) { setPixmap ( 0,pixi ) ; } else { setPixmap ( 0,QPixmap() ) ; } } void KOTodoViewItem::stateChange(bool state) { // qDebug("KOTodoViewItem::stateChange %d ", state); // do not change setting on startup if ( m_init ) return; if (isOn()!=state) { setOn(state); //qDebug("SETON "); return; } if ( mTodo->isCompleted() == state ) { //qDebug("STATECHANGE:nothing to do "); return; } QString keyd = "=="; QString keyt = "=="; //qDebug("KOTodoViewItem::stateChange %s ", text(0).latin1()); if ( mTodo->doesRecur() ){ QDateTime start = mTodo->dtStart(); mTodo->setCompleted(state); if ( start != mTodo->dtStart() ) { if ( state && !mTodo->isCompleted() ) { setOn( false ); state = false; } } } else mTodo->setCompleted(state); if (state) mTodo->setCompleted(QDateTime::currentDateTime()); if (mTodo->hasDueDate()) { setText(3, mTodo->dtDueDateStr()); QDate d = mTodo->dtDue().date(); keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); setSortKey(3,keyd); if (mTodo->doesFloat()) { setText(4,""); } else { setText(4,mTodo->dtDueTimeStr()); QTime t = mTodo->dtDue().time(); keyt.sprintf("%02d%02d",t.hour(),t.minute()); setSortKey(4,keyt); } } if (mTodo->hasStartDate()) { QString skeyt = "=="; QString skeyd = "=="; setText(5, mTodo->dtStartDateStr()); QDate d = mTodo->dtStart().date(); skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); if (mTodo->doesFloat()) { setText(6,""); } else { setText(6,mTodo->dtStartTimeStr()); QTime t = mTodo->dtStart().time(); skeyt.sprintf("%02d%02d",t.hour(),t.minute()); } setSortKey(5,skeyd); setSortKey(6,skeyt); } if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt); else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); if (mTodo->percentComplete()<100) { if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); else setSortKey(2,QString::number(mTodo->percentComplete())); } else { if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); else setSortKey(2,QString::number(99)); } if ( state ) { QListViewItem * myChild = firstChild(); KOTodoViewItem *item; while( myChild ) { //qDebug("stateCH "); item = static_cast<KOTodoViewItem*>(myChild); item->stateChange(state); myChild = myChild->nextSibling(); } } else { QListViewItem * myChild = parent(); if ( myChild ) (static_cast<KOTodoViewItem*>(myChild))->stateChange(state); } mTodoView->modified(true); setMyPixmap(); mTodoView->setTodoModified( mTodo ); } bool KOTodoViewItem::isAlternate() { #if 0 //if ( m_known ) return m_odd; //qDebug("test "); KOTodoViewItem *item = static_cast<KOTodoViewItem *>(itemAbove()); if ( item ) { m_known = item->m_known; if ( m_known ) { m_odd = !item->m_odd ; return m_odd; } } else { item = static_cast<KOTodoViewItem *>(itemBelow()); if ( item ) { m_known = item->m_known; if ( m_known ) { m_odd = !item->m_odd ; return m_odd; } } } KOTodoListView *lv = static_cast<KOTodoListView *>(listView()); item = static_cast<KOTodoViewItem *>(lv->firstChild()); bool previous = true; qDebug("WHILE "); while ( item ) { item->m_odd = !previous; item->m_known = true; previous = !previous; item = static_cast<KOTodoViewItem *>(item->itemBelow()); } return m_odd; #else //KOTodoListView *lv = static_cast<KOTodoListView *>(listView()); //if (lv && lv->alternateBackground().isValid()) { KOTodoViewItem *above = static_cast<KOTodoViewItem *>(itemAbove()); m_known = above ? above->m_known : true; if (m_known) { m_odd = above ? !above->m_odd : false; } else { KOTodoViewItem *item; bool previous = true; if (QListViewItem::parent()) |