-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 8 | ||||
-rw-r--r-- | korganizer/calendarview.cpp | 6 | ||||
-rw-r--r-- | korganizer/kotodoview.cpp | 24 | ||||
-rw-r--r-- | korganizer/kotodoviewitem.cpp | 66 | ||||
-rw-r--r-- | libkcal/incidence.cpp | 28 | ||||
-rw-r--r-- | libkcal/incidence.h | 3 | ||||
-rw-r--r-- | libkcal/incidencebase.cpp | 4 | ||||
-rw-r--r-- | libkcal/incidencebase.h | 1 | ||||
-rw-r--r-- | libkdepim/kdatepicker.cpp | 1 |
9 files changed, 117 insertions, 24 deletions
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt index ea7071d..6723dc5 100644 --- a/bin/kdepim/korganizer/germantranslation.txt +++ b/bin/kdepim/korganizer/germantranslation.txt @@ -1521,15 +1521,23 @@ { "Sending back synced file...","Sende synchronisierte Datei zurück..." }, { "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" }, { "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" }, { "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." }, { "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" }, { "Writing back file ...","Schreibe Datei zurück..." }, { "Sending back file ...","Sende Datei zurück..." }, { "Eeek, there I am ticklish!","Hihi, da bin ich kitzlig!" }, +{ "Created","Angelegt" }, +{ "Last Modified Sub","Zuletzt geändertes Sub" }, +{ "","" }, +{ "","" }, +{ "","" }, +{ "","" }, +{ "","" }, +{ "","" }, { "","" }, { "","" }, { "","" }, { "","" }, { "","" }, { "","" }, { "","" }, diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 7044e90..f9685e9 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -362,17 +362,17 @@ CalendarView::CalendarView( Calendar *calendar, mEventEditor = 0; mTodoEditor = 0; init(); } void CalendarView::init() { mNextAlarmDateTime = QDateTime::currentDateTime(); - setFocusPolicy ( NoFocus ); + //setFocusPolicy ( NoFocus ); mViewerCallerIsSearchDialog = false; mBlockShowDates = false; mDatePickerMode = 0; mCurrentSyncDevice = ""; mViewManager = new KOViewManager( this ); mDialogManager = new KODialogManager( this ); mEventViewerDialog = 0; @@ -4682,18 +4682,18 @@ void CalendarView::purgeCompleted() void CalendarView::slotCalendarChanged() { ; } void CalendarView::keyPressEvent ( QKeyEvent *e) { - //qDebug(" alendarView::keyPressEvent "); - e->ignore(); + //qDebug("CalendarView::keyPressEvent "); + e->ignore(); } bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) { if ( manager != mSyncManager) qDebug("KO: Internal error-1. SyncManager mismatch "); diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index add1819..94f35e6 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp @@ -427,24 +427,26 @@ void KOTodoListView::keyPressEvent ( QKeyEvent * e ) if ( cn ) { setCurrentItem ( cn ); ensureItemVisible ( cn ); } } } + e->accept(); return; } if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton || mName != "todolistsmall" ) { switch ( e->key() ) { case Qt::Key_Down: case Qt::Key_Up: QListView::keyPressEvent ( e ); + e->accept(); break; case Qt::Key_Left: case Qt::Key_Right: QListView::keyPressEvent ( e ); e->accept(); return; break; default: @@ -509,40 +511,41 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : mName = QString ( name ); mBlockUpdate = false; mQuickBar = new QWidget( this ); topLayout->addWidget(mQuickBar); mQuickAdd = new KOQuickTodo(mQuickBar); QBoxLayout *quickLayout = new QHBoxLayout(mQuickBar); quickLayout->addWidget( mQuickAdd ); + mNewSubBut = new QPushButton( "sub",mQuickBar ); + QPushButton * s_done = new QPushButton( "D",mQuickBar ); + QPushButton * s_run = new QPushButton( "R",mQuickBar ); + QPushButton * allopen = new QPushButton( "O",mQuickBar ); + QPushButton * allclose = new QPushButton( "C",mQuickBar ); QPushButton * flat = new QPushButton( "F",mQuickBar ); + int fixwid = flat->sizeHint().height(); if ( QApplication::desktop()->width() >= 800 ) fixwid *= 2; flat->setFixedWidth( fixwid ); connect ( flat, SIGNAL ( clicked()), SLOT ( setAllFlat())); - QPushButton * allopen = new QPushButton( "O",mQuickBar ); allopen->setFixedWidth( fixwid ); connect ( allopen, SIGNAL ( clicked()), SLOT ( setAllOpen())); - QPushButton * allclose = new QPushButton( "C",mQuickBar ); allclose->setFixedWidth( fixwid ); connect ( allclose, SIGNAL ( clicked()), SLOT ( setAllClose())); - QPushButton * s_done = new QPushButton( "D",mQuickBar ); s_done->setPixmap( SmallIcon("greenhook16")); s_done->setFixedWidth( fixwid ); s_done->setFixedHeight( flat->sizeHint().height() ); connect ( s_done, SIGNAL ( clicked()), SLOT ( toggleCompleted())); - QPushButton * s_run = new QPushButton( "R",mQuickBar ); s_run->setPixmap( SmallIcon("ko16old")); s_run->setFixedWidth( fixwid ); s_run->setFixedHeight( flat->sizeHint().height() ); connect ( s_run, SIGNAL ( clicked()), SLOT ( toggleRunning())); - mNewSubBut = new QPushButton( "sub",mQuickBar ); mNewSubBut->setFixedWidth( fixwid*3/2 ); connect ( mNewSubBut, SIGNAL ( clicked()), SLOT ( newSubTodo())); mNewSubBut->setEnabled( false ); quickLayout->addWidget( mNewSubBut ); quickLayout->addWidget( s_done ); quickLayout->addWidget( s_run ); quickLayout->addWidget( allopen ); @@ -570,30 +573,33 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : mTodoListView->addColumn(i18n("Due Time")); mTodoListView->setColumnAlignment(4,AlignHCenter); mTodoListView->addColumn(i18n("Start Date")); mTodoListView->setColumnAlignment(5,AlignLeft); mTodoListView->addColumn(i18n("Start Time")); mTodoListView->setColumnAlignment(6,AlignHCenter); - mTodoListView->addColumn(i18n("Cancelled")); + //mTodoListView->addColumn(i18n("Cancelled")); mTodoListView->addColumn(i18n("Categories")); mTodoListView->addColumn(i18n("Calendar")); + mTodoListView->addColumn(i18n("Last Modified")); + mTodoListView->addColumn(i18n("Created")); + mTodoListView->addColumn(i18n("Last Modified Sub")); #if 0 mTodoListView->addColumn(i18n("Sort Id")); mTodoListView->setColumnAlignment(4,AlignHCenter); #endif mTodoListView->setMinimumHeight( 60 ); mTodoListView->setItemsRenameable( true ); mTodoListView->setRenameable( 0 ); mTodoListView->setColumnWidth( 0, 120 ); int iii = 0; - for ( iii = 0; iii< 10 ; ++iii ) + for ( iii = 0; iii< 12 ; ++iii ) mTodoListView->setColumnWidthMode( iii, QListView::Manual ); mKOTodoViewWhatsThis = new KOTodoViewWhatsThis(mTodoListView->viewport(),this); mPriorityPopupMenu = new QPopupMenu(this); for (int i = 1; i <= 5; i++) { QString label = QString ("%1").arg (i); @@ -1598,25 +1604,25 @@ void KOTodoView::addQuickTodoPar( Todo * parentTodo) todoModified (todo, KOGlobals::EVENTADDED ); updateView(); } void KOTodoView::keyPressEvent ( QKeyEvent * e ) { // e->ignore(); //return; - //qDebug("KOTodoView::keyPressEvent "); if ( !isVisible() ) { e->ignore(); return; } switch ( e->key() ) { case Qt::Key_Down: case Qt::Key_Up: - QWidget::keyPressEvent ( e ); + // KOrg::BaseView::keyPressEvent ( e ); + e->ignore(); break; case Qt::Key_Q: if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) { e->ignore(); break; diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp index 0cf6e4c..bdef94c 100644 --- a/korganizer/kotodoviewitem.cpp +++ b/korganizer/kotodoviewitem.cpp @@ -148,20 +148,36 @@ void KOTodoViewItem::construct() } } setText(5,keyd); setText(6,keyt); setSortKey(5,skeyd); setSortKey(6,skeyt); - setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No")); - setText(8,mTodo->categoriesStr()); - setText(9,KOPrefs::instance()->calName( mTodo->calID())); - + //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 = mTodo->lastModified().date(); + QTime t = mTodo->lastModified().time(); + key.sprintf("%04d%02d%02d%02d%02d%02d",d.year(),d.month(),d.day(),t.hour(),t.minute(),t.second() ); + setSortKey(9,key); + 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); + d = mTodo->lastModifiedSub().date(); + t = mTodo->lastModifiedSub().time(); + key.sprintf("%04d%02d%02d%02d%02d%02d",d.year(),d.month(),d.day(),t.hour(),t.minute(),t.second() ); + setSortKey(11,key); + #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 { @@ -312,22 +328,54 @@ void KOTodoViewItem::stateChange(bool 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()); - if (lv && lv->alternateBackground().isValid()) + 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 = 0; - above = static_cast<KOTodoViewItem *>(itemAbove()); + 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; @@ -336,29 +384,31 @@ bool KOTodoViewItem::isAlternate() { item = static_cast<KOTodoViewItem *>(QListViewItem::parent()); if (item) previous = item->m_odd; item = static_cast<KOTodoViewItem *>(QListViewItem::parent()->firstChild()); } else { + KOTodoListView *lv = static_cast<KOTodoListView *>(listView()); item = static_cast<KOTodoViewItem *>(lv->firstChild()); } while(item) { item->m_odd = previous = !previous; item->m_known = true; item = static_cast<KOTodoViewItem *>(item->nextSibling()); } } return m_odd; } return false; +#endif } void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) { QColorGroup _cg = cg; QColorGroup::ColorRole role; if ( KOPrefs::instance()->mTodoViewUsesForegroundColor && !mTodo->isRunning()) role = QColorGroup::Text; diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp index 11f7ecc..e4bcc5e 100644 --- a/libkcal/incidence.cpp +++ b/libkcal/incidence.cpp @@ -276,17 +276,37 @@ void Incidence::cloneRelations( Incidence * newInc ) inc->cloneRelations( cloneInc ); } } void Incidence::setReadOnly( bool readOnly ) { IncidenceBase::setReadOnly( readOnly ); recurrence()->setRecurReadOnly( readOnly); } - +void Incidence::setLastModifiedSubInvalid() +{ + mLastModifiedSub = QDateTime(); + if ( mRelatedTo ) + mRelatedTo->setLastModifiedSubInvalid(); +} +QDateTime Incidence::lastModifiedSub() +{ + if ( !mRelations.count() ) + return lastModified(); + if ( mLastModifiedSub.isValid() ) + return mLastModifiedSub; + mLastModifiedSub = lastModified(); + Incidence * inc; + QPtrList<Incidence> Relations = relations(); + for (inc=Relations.first();inc;inc=Relations.next()) { + if ( inc->lastModifiedSub() > mLastModifiedSub ) + mLastModifiedSub = inc->lastModifiedSub(); + } + return mLastModifiedSub; +} void Incidence::setCreated(QDateTime created) { if (mReadOnly) return; mCreated = getEvenTime(created); } QDateTime Incidence::created() const { @@ -463,27 +483,27 @@ void Incidence::addRelationsToList(QPtrList<Incidence> *rel) inc->addRelationsToList( rel ); } if ( rel->findRef( this ) == -1 ) rel->append( this ); } void Incidence::addRelation(Incidence *event) { + setLastModifiedSubInvalid(); if( mRelations.findRef( event ) == -1 ) { mRelations.append(event); //updated(); } } void Incidence::removeRelation(Incidence *event) { - - mRelations.removeRef(event); - + setLastModifiedSubInvalid(); + mRelations.removeRef(event); // if (event->getRelatedTo() == this) event->setRelatedTo(0); } bool Incidence::recursOn(const QDate &qd) const { if (recurrence()->recursOnPure(qd) && !isException(qd)) return true; else return false; } diff --git a/libkcal/incidence.h b/libkcal/incidence.h index c88ba2f..d4af9f0 100644 --- a/libkcal/incidence.h +++ b/libkcal/incidence.h @@ -272,31 +272,34 @@ class Incidence : public IncidenceBase void setHasRecurrenceID( bool b ); void setRecurrenceID(QDateTime); QDateTime recurrenceID () const; QDateTime dtStart() const; bool isHoliday() const; bool isBirthday() const; bool isAnniversary() const; + QDateTime lastModifiedSub(); + void setLastModifiedSubInvalid(); protected: QPtrList<Alarm> mAlarms; QPtrList<Incidence> mRelations; QDateTime mRecurrenceID; bool mHasRecurrenceID; private: void checkCategories(); bool mHoliday, mBirthday, mAnniversary; int mRevision; bool mCancelled; // base components of jounal, event and todo QDateTime mCreated; + QDateTime mLastModifiedSub; QString mDescription; QString mSummary; QStringList mCategories; Incidence *mRelatedTo; QString mRelatedToUid; DateList mExDates; QPtrList<Attachment> mAttachments; QStringList mResources; diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp index 1a19f3e..022dead 100644 --- a/libkcal/incidencebase.cpp +++ b/libkcal/incidencebase.cpp @@ -186,23 +186,27 @@ void IncidenceBase::setUid(const QString &uid) mUid = uid; updated(); } QString IncidenceBase::uid() const { return mUid; } +void IncidenceBase::setLastModifiedSubInvalid() +{ +} void IncidenceBase::setLastModified(const QDateTime &lm) { if ( blockLastModified ) return; // DON'T! updated() because we call this from // Calendar::updateEvent(). mLastModified = getEvenTime(lm); + setLastModifiedSubInvalid(); //qDebug("IncidenceBase::setLastModified %s ",lm.toString().latin1()); } QDateTime IncidenceBase::lastModified() const { return mLastModified; } diff --git a/libkcal/incidencebase.h b/libkcal/incidencebase.h index bed73db..665c1f6 100644 --- a/libkcal/incidencebase.h +++ b/libkcal/incidencebase.h @@ -144,16 +144,17 @@ class IncidenceBase : public CustomProperties void setCalID( int id ); int calID() const; void setCalEnabled( bool ); bool calEnabled() const; void setAlarmEnabled( bool ); bool alarmEnabled() const; bool isTagged() const; void setTagged( bool ); + virtual void setLastModifiedSubInvalid(); protected: bool blockLastModified; bool mIsTagged; QDateTime mDtStart; bool mReadOnly; QDateTime getEvenTime( QDateTime ); private: diff --git a/libkdepim/kdatepicker.cpp b/libkdepim/kdatepicker.cpp index 5d83511..7f352d6 100644 --- a/libkdepim/kdatepicker.cpp +++ b/libkdepim/kdatepicker.cpp @@ -471,16 +471,17 @@ void KDatePicker::keyPressEvent ( QKeyEvent * e ) break; case Qt::Key_Up: yearBackwardClicked(); break; case Qt::Key_Return: + case Qt::Key_Enter: tableClickedSlot(); break; case Qt::Key_Escape: e->ignore(); break; default: break; } |