summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt8
-rw-r--r--korganizer/calendarview.cpp6
-rw-r--r--korganizer/kotodoview.cpp24
-rw-r--r--korganizer/kotodoviewitem.cpp66
-rw-r--r--libkcal/incidence.cpp28
-rw-r--r--libkcal/incidence.h3
-rw-r--r--libkcal/incidencebase.cpp4
-rw-r--r--libkcal/incidencebase.h1
-rw-r--r--libkdepim/kdatepicker.cpp1
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
@@ -1517,19 +1517,27 @@
{ "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" },
{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" },
{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" },
{ "Receiving file from remote...","Empfange entfernte Datei..." },
{ "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
@@ -358,25 +358,25 @@ CalendarView::CalendarView( Calendar *calendar,
mCalendar( calendar ),
mResourceManager( 0 )
{
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;
mModified = false;
mReadOnly = false;
mSelectedIncidence = 0;
mCalPrinter = 0;
@@ -4678,26 +4678,26 @@ void CalendarView::purgeCompleted()
updateView();
}
}
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 ");
if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
qDebug("KO: SyncKDE request detected!");
}
mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index add1819..94f35e6 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -423,32 +423,34 @@ void KOTodoListView::keyPressEvent ( QKeyEvent * e )
ci->setOn( false );
else
ci->setOn( true );
cn = cn->itemBelow();
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:
e->ignore();
break;
}
return;
@@ -505,48 +507,49 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
mPendingUpdateBeforeRepaint = false;
isFlatDisplay = false;
mNavigator = 0;
QBoxLayout *topLayout = new QVBoxLayout(this);
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 );
quickLayout->addWidget( allclose );
quickLayout->addWidget( flat );
if ( !KOPrefs::instance()->mEnableQuickTodo ) mQuickBar->hide();
@@ -566,38 +569,41 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
mTodoListView->setColumnAlignment(2,AlignCenter);
mTodoListView->addColumn(i18n("Due Date"));
mTodoListView->setColumnAlignment(3,AlignLeft);
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);
mPriority[mPriorityPopupMenu->insertItem (label)] = i;
}
connect (mPriorityPopupMenu, SIGNAL(activated (int)), SLOT (setNewPriority(int)));
@@ -1594,33 +1600,33 @@ void KOTodoView::addQuickTodoPar( Todo * parentTodo)
}
}
mCalendar->addTodo(todo);
mQuickAdd->setText("");
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;
}
toggleQuickTodo();
break;
case Qt::Key_U:
diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp
index 0cf6e4c..bdef94c 100644
--- a/korganizer/kotodoviewitem.cpp
+++ b/korganizer/kotodoviewitem.cpp
@@ -144,28 +144,44 @@ void KOTodoViewItem::construct()
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(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 {
QString str = mTodo->description().mid(pos+1);
str.stripWhiteSpace();
setText(6,str);
}
@@ -308,61 +324,95 @@ void KOTodoViewItem::stateChange(bool state)
} 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());
- 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;
bool previous = true;
if (QListViewItem::parent())
{
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;
else
role = QColorGroup::Base;
//#ifndef KORG_NOLVALTERNATION
if (isAlternate())
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp
index 11f7ecc..e4bcc5e 100644
--- a/libkcal/incidence.cpp
+++ b/libkcal/incidence.cpp
@@ -272,25 +272,45 @@ void Incidence::cloneRelations( Incidence * newInc )
for (inc=Relations.first();inc;inc=Relations.next()) {
cloneInc = inc->clone();
cloneInc->recreate();
cloneInc->setRelatedTo( 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
{
return mCreated;
}
void Incidence::setRevision(int rev)
@@ -459,35 +479,35 @@ void Incidence::addRelationsToList(QPtrList<Incidence> *rel)
{
Incidence* inc;
QPtrList<Incidence> Relations = relations();
for (inc=Relations.first();inc;inc=Relations.next()) {
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;
}
void Incidence::setExDates(const DateList &exDates)
{
if (mReadOnly) return;
diff --git a/libkcal/incidence.h b/libkcal/incidence.h
index c88ba2f..d4af9f0 100644
--- a/libkcal/incidence.h
+++ b/libkcal/incidence.h
@@ -268,39 +268,42 @@ class Incidence : public IncidenceBase
bool cancelled() const;
void setCancelled( bool b );
bool hasRecurrenceID() const;
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;
bool mHasStartDate; // if todo has associated start date
int mSecrecy;
int mPriority; // 1 = highest, 2 = less, etc.
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp
index 1a19f3e..022dead 100644
--- a/libkcal/incidencebase.cpp
+++ b/libkcal/incidencebase.cpp
@@ -182,31 +182,35 @@ bool IncidenceBase::alarmEnabled() const
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;
}
void IncidenceBase::setOrganizer(const QString &o)
{
// we don't check for readonly here, because it is
// possible that by setting the organizer we are changing
diff --git a/libkcal/incidencebase.h b/libkcal/incidencebase.h
index bed73db..665c1f6 100644
--- a/libkcal/incidencebase.h
+++ b/libkcal/incidencebase.h
@@ -140,24 +140,25 @@ class IncidenceBase : public CustomProperties
void registerObserver( Observer * );
void unRegisterObserver( Observer * );
void updated();
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:
// base components
QString mOrganizer;
QString mUid;
int mCalID;
diff --git a/libkdepim/kdatepicker.cpp b/libkdepim/kdatepicker.cpp
index 5d83511..7f352d6 100644
--- a/libkdepim/kdatepicker.cpp
+++ b/libkdepim/kdatepicker.cpp
@@ -467,22 +467,23 @@ void KDatePicker::keyPressEvent ( QKeyEvent * e )
break;
case Qt::Key_Down:
yearForwardClicked();
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;
}
}