-rw-r--r-- | bin/kdepim/WhatsNew.txt | 2 | ||||
-rw-r--r-- | korganizer/koeditorgeneral.cpp | 65 | ||||
-rw-r--r-- | korganizer/koeditorgeneral.h | 4 | ||||
-rw-r--r-- | korganizer/koeventpopupmenu.cpp | 1 | ||||
-rw-r--r-- | libkcal/calendarlocal.cpp | 7 |
5 files changed, 69 insertions, 10 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 71d7208..27d37c4 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt @@ -1,17 +1,19 @@ Info about the changes in new versions of KDE-Pim/Pi ********** VERSION 2.1.13 ************ Fixed a problem in KA/Pi search. +Fixed some minor problems in KO/Pi. +Added calendar selection possibility to the todo view popup and to the event/todo editor. ********** VERSION 2.1.12 ************ KO/Pi: Many small usability fixes, e.g. rearranged the popup menus such that they are better to use on the Zaurus. Fixed a problem with the month view when file was saved but KO/Pi was not the active window. Fixed some problems in the resource config dialog (e.g. added a warning if you set all calendars to read-only). Fixed some other small problems. ********** VERSION 2.1.11 ************ diff --git a/korganizer/koeditorgeneral.cpp b/korganizer/koeditorgeneral.cpp index 29e68b3..753630b 100644 --- a/korganizer/koeditorgeneral.cpp +++ b/korganizer/koeditorgeneral.cpp @@ -72,61 +72,71 @@ KOEditorGeneral::~KOEditorGeneral() void KOEditorGeneral::initHeader(QWidget *parent,QBoxLayout *topLayout) { QGridLayout *headerLayout = new QGridLayout(topLayout); #if 0 mOwnerLabel = new QLabel(i18n("Owner:"),parent); headerLayout->addMultiCellWidget(mOwnerLabel,0,0,0,1); #endif // 1 on pda // 11 on desktop headerLayout->setSpacing( (KDialog::spacingHint()-3)*2+1 ); QLabel *summaryLabel = new QLabel(i18n("Summary:"),parent); - headerLayout->addWidget(summaryLabel,1,0); + headerLayout->addWidget(summaryLabel,0,0); mSummaryEdit = new KOLocationBox(TRUE,parent, 10); mSummaryEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); //mSummaryEdit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5 ,(QSizePolicy::SizeType)3 ,FALSE) ); //qDebug("h %d %d ", summaryLabel->sizeHint().height(),mSummaryEdit->sizeHint().height() ); int hei = (summaryLabel->sizeHint().height() + mSummaryEdit->sizeHint().height())/2; if ( QApplication::desktop()->width() > 320 ) mSummaryEdit->setMaximumHeight( hei +6 ); //qDebug("%d %d %d %d %d %d ", QSizePolicy::Fixed , QSizePolicy::Minimum , QSizePolicy:: Maximum , QSizePolicy:: Preferred , QSizePolicy:: MinimumExpanding , QSizePolicy::Expanding ); // SizeType { Fixed = 0, Minimum = MayGrow, Maximum = MayShrink, Preferred = MayGrow|MayShrink, MinimumExpanding = Minimum|ExpMask, Expanding = MinimumExpanding|MayShrink } // mSummaryEdit = new QLineEdit(parent); - headerLayout->addWidget(mSummaryEdit,1,1); + if ( QApplication::desktop()->height() < 320 ) + headerLayout->addWidget(mSummaryEdit,0,1); + else + headerLayout->addMultiCellWidget(mSummaryEdit,0,0,1,2); connect ( mSummaryEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); QLabel *locationLabel = new QLabel(i18n("Location:"),parent); if ( QApplication::desktop()->height() < 320 ) - headerLayout->addWidget(locationLabel,1,2); + headerLayout->addWidget(locationLabel,0,2); else - headerLayout->addWidget(locationLabel,2,0); + headerLayout->addWidget(locationLabel,1,0); mLocationEdit = new KOLocationBox(TRUE,parent,10); mLocationEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); if ( QApplication::desktop()->width() > 320 && QApplication::desktop()->height() > 240 ) mLocationEdit->setMaximumHeight( hei + 6); // mLocationEdit = new QLineEdit(parent); connect ( mLocationEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); + + mCalendarBox = new QComboBox ( parent ); + mCalendarBox->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); if ( QApplication::desktop()->height() < 320 ) { - headerLayout->addWidget(mLocationEdit,1,3); + headerLayout->addWidget(mLocationEdit,0,3); + headerLayout->addWidget(mCalendarBox,0,4); headerLayout->setColStretch( 1, 10); headerLayout->setColStretch( 3, 10); + mCalendarBox->setMaximumWidth( 64 ); } else { - headerLayout->addWidget(mLocationEdit,2,1); + headerLayout->addWidget(mLocationEdit,1,1); + headerLayout->addWidget(mCalendarBox,1,2); headerLayout->setColStretch( 1, 10); } + } void KOEditorGeneral::setFocusOn( int i ) { mNextFocus = i; QTimer::singleShot( 0, this, SLOT ( slotSetFocusOn() )); } void KOEditorGeneral::slotSetFocusOn() { mNextFocus; if ( mNextFocus == 1 ) { mDescriptionEdit->setFocus(); mDescriptionEdit->setCursorPosition( mDescriptionEdit->numLines (), 333); @@ -427,32 +437,72 @@ void KOEditorGeneral::setDefaults(bool allDay) mAlarmButton ->setChecked( false ); mAlarmTimeEdit->setValue(alarmTime); mAlarmIncrCombo->setCurrentItem(0); enableAlarmEdit( false ); //alarmDisable (false); mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic); mCancelBox->setChecked( false ); mSummaryEdit->setEditText(""); mLocationEdit->setEditText(""); mDescriptionEdit->setText(""); mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; setCategories(""); + fillCalCombo(); } void KOEditorGeneral::setSecrecy( int num ) { mSecrecyCombo->setCurrentItem(num); } -void KOEditorGeneral::readIncidence(Incidence *event) +void KOEditorGeneral::fillCalCombo( int setToID ) { + mCalendarBox->clear(); + KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); + int std = 0; + int count = 0; + while ( kkf ) { + if ( !kkf->mErrorOnLoad &&! kkf->isReadOnly ) { + if ( setToID ) { + if ( kkf->mCalNumber == setToID ) + std = count; + } else { + if ( kkf->isStandard ) { + std = count; + } + } + ++count; + mCalendarBox->insertItem( kkf->mName ); + } + kkf = KOPrefs::instance()->mCalendars.next(); + } + mCalendarBox->setCurrentItem( std ); + if ( KOPrefs::instance()->mCalendars.count() == 1 ) + mCalendarBox->hide(); + else + mCalendarBox->show(); + +} +int KOEditorGeneral::getCalendarID() +{ + KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); + while ( kkf ) { + if ( mCalendarBox->currentText() == kkf->mName) + return kkf->mCalNumber; + kkf = KOPrefs::instance()->mCalendars.next(); + } + return 1; +} +void KOEditorGeneral::readIncidence(Incidence *event) +{ + fillCalCombo( event->calID() ); mAlarmMessage = event->summary(); if ( ! event->location().isEmpty() ) mAlarmMessage += " ("+event->location()+")"; mAlarmIncrCombo->setCurrentItem(0); mSummaryEdit->setEditText(event->summary()); mLocationEdit->setEditText(event->location()); mDescriptionEdit->setText(event->description()); #if 0 // organizer information mOwnerLabel->setText(i18n("Owner: ") + event->organizer()); #endif @@ -560,13 +610,14 @@ void KOEditorGeneral::writeIncidence(Incidence *event) alarm->setType(Alarm::Invalid); //alarm->setAudioAlarm("default"); // TODO: Deal with multiple alarms break; // For now, stop after the first alarm } } else { Alarm* alarm = event->alarms().first(); if ( alarm ) { alarm->setEnabled(false); alarm->setType(Alarm::Invalid); } } + event->setCalID( getCalendarID() ); } diff --git a/korganizer/koeditorgeneral.h b/korganizer/koeditorgeneral.h index c463403..d8b15af 100644 --- a/korganizer/koeditorgeneral.h +++ b/korganizer/koeditorgeneral.h @@ -26,24 +26,25 @@ #include <qframe.h> #include <qlabel.h> #include <qcheckbox.h> #include <qpushbutton.h> #include <qpopupmenu.h> #include <qgroupbox.h> #include <qlineedit.h> #include <qcombobox.h> #include <qlistview.h> #include <qradiobutton.h> #include <qlayout.h> #include <qspinbox.h> +#include <qcombobox.h> #include <ktextedit.h> #include <krestrictedline.h> #include <libkcal/incidence.h> #include "ktimeedit.h" class KDateEdit; class KOLocationBox; using namespace KCal; @@ -63,49 +64,52 @@ class KOEditorGeneral : public QObject /** Set widgets to default values */ void setDefaults(bool allDay); /** Read event object and setup widgets accordingly */ void readIncidence(Incidence *); /** Write event settings to event object */ void writeIncidence(Incidence *); /** Check if the input is valid. */ bool validateInput() { return true; } void enableAlarm( bool enable ); void setSecrecy( int num ); + int getCalendarID(); public slots: void setCategories(const QString &); void editCategories(); protected slots: void enableAlarmEdit( bool enable ); void disableAlarmEdit( bool disable ); void alarmDisable( bool disable ); void pickAlarmSound(); void pickAlarmProgram(); void slotSetFocusOn(); void showCatPopup(); void selectedCatPopup( int ); signals: void openCategoryDialog(); void allAccepted(); void dateTimesChanged(QDateTime,QDateTime); protected: + void fillCalCombo( int setToID = 0 ); int mNextFocus; //QLineEdit *mSummaryEdit; //QLineEdit *mLocationEdit; KOLocationBox *mSummaryEdit; KOLocationBox *mLocationEdit; + QComboBox *mCalendarBox; QLabel *mAlarmBell; QCheckBox *mAlarmButton; QSpinBox *mAlarmTimeEdit; QPushButton *mAlarmSoundButton; QPushButton *mAlarmProgramButton; QComboBox *mAlarmIncrCombo; KTextEdit *mDescriptionEdit; QLabel *mOwnerLabel; QComboBox *mSecrecyCombo; QCheckBox *mCancelBox; QPushButton *mCategoriesButton; QPushButton *mCategoriesLabel; diff --git a/korganizer/koeventpopupmenu.cpp b/korganizer/koeventpopupmenu.cpp index 77322e7..fc4d9a4 100644 --- a/korganizer/koeventpopupmenu.cpp +++ b/korganizer/koeventpopupmenu.cpp @@ -69,25 +69,24 @@ KOEventPopupMenu::KOEventPopupMenu(): QPopupMenu() for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) { mSingleOnlyItems.append(*it); } } void KOEventPopupMenu::enableDefault( bool enable ) { isDisabled = !enable; QValueList<int>::Iterator it; for( it = mSingleOnlyItems.begin(); it != mSingleOnlyItems.end(); ++it ) { setItemEnabled(*it,enable); } - } void KOEventPopupMenu::fillCalPopup() // CAL { mCalPopup->clear(); if (!mCurrentIncidence) return; bool readO = mCurrentIncidence->isReadOnly()|| isDisabled; KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); while ( kkf ) { int index = mCalPopup->insertItem( kkf->mName, kkf->mCalNumber); if ( kkf->mErrorOnLoad || kkf->isReadOnly || readO ) mCalPopup->setItemEnabled( index, false ); diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp index ca64e66..cce798f 100644 --- a/libkcal/calendarlocal.cpp +++ b/libkcal/calendarlocal.cpp @@ -214,25 +214,26 @@ bool CalendarLocal::addEventNoDup( Event *event ) } } return addEvent( event ); } bool CalendarLocal::addEvent( Event *event ) { insertEvent( event ); event->registerObserver( this ); setModified( true ); - event->setCalID( mDefaultCalendar ); + if ( event->calID() == 0 ) + event->setCalID( mDefaultCalendar ); event->setCalEnabled( true ); return true; } void CalendarLocal::deleteEvent( Event *event ) { if ( mUndoIncidence ) delete mUndoIncidence; mUndoIncidence = event->clone(); if ( mEventList.removeRef( event ) ) { setModified( true ); } @@ -268,24 +269,25 @@ bool CalendarLocal::addTodoNoDup( Todo *todo ) return addTodo( todo ); } bool CalendarLocal::addTodo( Todo *todo ) { mTodoList.append( todo ); todo->registerObserver( this ); // Set up subtask relations setupRelations( todo ); setModified( true ); + if ( todo->calID() == 0 ) todo->setCalID( mDefaultCalendar ); todo->setCalEnabled( true ); return true; } void CalendarLocal::deleteTodo( Todo *todo ) { // Handle orphaned children if ( mUndoIncidence ) delete mUndoIncidence; removeRelations( todo ); mUndoIncidence = todo->clone(); @@ -772,25 +774,26 @@ QPtrList<Event> CalendarLocal::rawEvents() for ( Event *it = mEventList.first(); it; it = mEventList.next() ) if ( it->calEnabled() ) el.append( it ); return el; } bool CalendarLocal::addJournal(Journal *journal) { mJournalList.append(journal); journal->registerObserver( this ); setModified( true ); - journal->setCalID( mDefaultCalendar ); + if ( journal->calID() == 0 ) + journal->setCalID( mDefaultCalendar ); journal->setCalEnabled( true ); return true; } void CalendarLocal::deleteJournal( Journal *journal ) { if ( mUndoIncidence ) delete mUndoIncidence; mUndoIncidence = journal->clone(); mUndoIncidence->setSummary( mUndoIncidence->description().left(25)); if ( mJournalList.removeRef(journal) ) { setModified( true ); } |