summaryrefslogtreecommitdiffabout
path: root/korganizer/koprefs.cpp
Side-by-side diff
Diffstat (limited to 'korganizer/koprefs.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koprefs.cpp87
1 files changed, 82 insertions, 5 deletions
diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp
index 8f951ee..179f586 100644
--- a/korganizer/koprefs.cpp
+++ b/korganizer/koprefs.cpp
@@ -305,41 +305,42 @@ KOPrefs::KOPrefs() :
addItemInt("IMIP auto save FreeBusy",&mIMIPAutoFreeBusyReply,neverAuto);
KPrefs::setCurrentGroup( "Editors" );
addItemStringList( "EventTemplates", &mEventTemplates );
addItemStringList( "TodoTemplates", &mTodoTemplates );
addItemInt("DestinationPolicy",&mDestination,standardDestination);
KPrefs::setCurrentGroup( "ViewOptions" );
addItemBool("EVshowDetails",&mEVshowDetails,true);
addItemBool("EVshowCreated",&mEVshowCreated,true);
addItemBool("EVshowChanged",&mEVshowChanged,true);
addItemBool("WTshowDetails",&mWTshowDetails,false);
addItemBool("WTshowCreated",&mWTshowCreated,false);
addItemBool("WTshowChanged",&mWTshowChanged,false);
-
+ mCalendars.setAutoDelete( true );
}
KOPrefs::~KOPrefs()
{
if (mInstance == this)
mInstance = insd.setObject(0);
-
+ mCalendars.setAutoDelete( true );
+ mCalendars.clear();
//qDebug("KOPrefs::~KOPrefs() ");
}
KOPrefs *KOPrefs::instance()
{
if (!mInstance) {
mInstance = insd.setObject(new KOPrefs());
mInstance->readConfig();
}
return mInstance;
}
void KOPrefs::usrSetDefaults()
{
@@ -422,54 +423,130 @@ void KOPrefs::usrReadConfig()
mTodoSummaryUser = getDefaultList() ;
}
if (mCustomCategories.isEmpty()) setCategoryDefaults();
config()->setGroup("Personal Settings");
mName = config()->readEntry("user_name","");
mEmail = config()->readEntry("user_email","");
fillMailDefaults();
config()->setGroup("Category Colors");
QStringList::Iterator it;
for (it = mCustomCategories.begin();it != mCustomCategories.end();++it ) {
setCategoryColor(*it,config()->readColorEntry(*it,&mDefaultCategoryColor));
}
-
+ config()->setGroup("CCal");
+ int numCals = config()->readNumEntry("NumberCalendars",0 );
+ mNextAvailableCalendar = 1;
+ if ( numCals == 0 ) {
+ KopiCalendarFile *kkf = getNewCalendar();
+ kkf->isStandard = true;
+ kkf->mName = i18n("Standard Calendar");
+ kkf->mFileName = locateLocal( "data", "korganizer/mycalendar.ics" );
+ }
+ while ( mNextAvailableCalendar <= numCals ) {
+ qDebug("Read cal #%d ", mNextAvailableCalendar );
+ QString prefix = "Cal_" +QString::number( mNextAvailableCalendar );
+ KopiCalendarFile *kkf = getNewCalendar();
+ kkf->isStandard = config()->readBoolEntry( prefix+"_isStandard", false );
+ kkf->isEnabled = config()->readBoolEntry( prefix+"_isEnabled", true);
+ kkf->isAlarmEnabled = config()->readBoolEntry( prefix+"_isAlarmEnabled", true);
+ kkf->isReadOnly = config()->readBoolEntry( prefix+"_isReadOnly", false);
+ kkf->mName = config()->readEntry( prefix+"_Name", "Calendar");
+ kkf->mFileName = config()->readEntry( prefix+"_FileName", kkf->mFileName);
+ kkf->mDefaultColor = config()->readColorEntry( prefix+"_Color",&mEventColor);
+ if ( kkf->mCalNumber == 1 ) {
+ kkf->mFileName = locateLocal( "data", "korganizer/mycalendar.ics" );
+ //kkf->mName = i18n("Standard Calendar");
+ }
+ }
+
KPimPrefs::usrReadConfig();
}
+KopiCalendarFile * KOPrefs::getNewCalendar()
+{
+ KopiCalendarFile * kkf = new KopiCalendarFile();
+ kkf->mCalNumber = mNextAvailableCalendar;
+ mDefCalColors.resize( mNextAvailableCalendar );
+ mDefCalColors[mNextAvailableCalendar-1] = kkf;
+ ++mNextAvailableCalendar;
+ kkf->mDefaultColor = mEventColor;
+ kkf->mName = i18n("New Calendar");
+ mCalendars.append( kkf );
+ return kkf;
+}
+void KOPrefs::deleteCalendar( int num )
+{
+ KopiCalendarFile * kkf = mCalendars.first();
+ while ( kkf ) {
+ if ( kkf->mCalNumber == num ) {
+ qDebug("KOPrefs::deleteCalendar %d ", num );
+ mCalendars.remove( kkf );
+ delete kkf;
+ return;
+ }
+ kkf = mCalendars.next();
+ }
+}
+QColor KOPrefs::defaultColor( int calNum ) const
+{
+ return (mDefCalColors[calNum-1])->mDefaultColor;
+}
void KOPrefs::usrWriteConfig()
{
config()->setGroup("General");
config()->writeEntry("Custom Categories",mCustomCategories);
config()->setGroup("Personal Settings");
config()->writeEntry("user_name",mName);
config()->writeEntry("user_email",mEmail);
config()->setGroup("Category Colors");
QDictIterator<QColor> it(mCategoryColors);
while (it.current()) {
config()->writeEntry(it.currentKey(),*(it.current()));
++it;
}
-
-
+ config()->setGroup("CCal");
+ config()->writeEntry("NumberCalendars",mCalendars.count());
+ int numCal = 1;
+ int writeCal = 0;
+ while ( numCal < mNextAvailableCalendar ) {
+ KopiCalendarFile * kkf = mCalendars.first();
+ while ( kkf ) {
+ qDebug("cal num %d %d ", kkf->mCalNumber, numCal);
+ if ( kkf->mCalNumber == numCal ) {
+ ++writeCal;
+ qDebug("Write calendar %d %d ", numCal , writeCal);
+ QString prefix = "Cal_" + QString::number( writeCal );
+ config()->writeEntry( prefix+"_isStandard", kkf->isStandard );
+ config()->writeEntry( prefix+"_isEnabled", kkf->isEnabled );
+ config()->writeEntry( prefix+"_isAlarmEnabled", kkf->isAlarmEnabled );
+ config()->writeEntry( prefix+"_isReadOnly", kkf->isReadOnly );
+ config()->writeEntry( prefix+"_Name", kkf->mName);
+ config()->writeEntry( prefix+"_FileName", kkf->mFileName);
+ config()->writeEntry( prefix+"_Color",kkf->mDefaultColor);
+ }
+ kkf = mCalendars.next();
+ }
+ ++numCal;
+ }
KPimPrefs::usrWriteConfig();
}
void KOPrefs::setCategoryColor(QString cat,const QColor & color)
{
mCategoryColors.replace(cat,new QColor(color));
}
QColor *KOPrefs::categoryColor(QString cat)
{
QColor *color = 0;
if (!cat.isEmpty()) color = mCategoryColors[cat];
if (color) return color;
else return &mDefaultCategoryColor;