summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/koprefs.cpp85
-rw-r--r--korganizer/koprefs.h32
2 files changed, 112 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
@@ -315,21 +315,22 @@ KOPrefs::KOPrefs() :
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()
{
@@ -432,17 +433,71 @@ void KOPrefs::usrReadConfig()
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");
@@ -452,14 +507,36 @@ void KOPrefs::usrWriteConfig()
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));
diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h
index 864cf1b..7d71cbd 100644
--- a/korganizer/koprefs.h
+++ b/korganizer/koprefs.h
@@ -23,12 +23,14 @@
#ifndef KOPREFS_H
#define KOPREFS_H
#include <libkdepim/kpimprefs.h>
#include <qdict.h>
+#include <qdir.h>
+#include <qobject.h>
class KConfig;
class QFont;
class QColor;
class QStringList;
@@ -38,12 +40,35 @@ class QStringList;
#define VIEW_A_VIEW 4
#define VIEW_ML_VIEW 5
#define VIEW_M_VIEW 6
#define VIEW_L_VIEW 7
#define VIEW_T_VIEW 8
+class KopiCalendarFile : public QObject
+{
+ public:
+ KopiCalendarFile( ) : QObject( )
+ {
+ isStandard = false;
+ isEnabled = true;
+ isAlarmEnabled = true;
+ isReadOnly = false;
+ mName = "Calendar";
+ mFileName = QDir::homeDirPath() + "/icalfile.ics";
+ mCalNumber = 0;
+ mDefaultColor = Qt::red;
+ }
+ bool isStandard;
+ bool isEnabled;
+ bool isAlarmEnabled;
+ bool isReadOnly;
+ QString mName;
+ QString mFileName;
+ int mCalNumber;
+ QColor mDefaultColor;
+};
class KOPrefs : public KPimPrefs
{
public:
enum { FormatVCalendar, FormatICalendar };
enum { MailClientKMail, MailClientSendmail };
enum { IMIPDummy, IMIPKMail };
@@ -64,13 +89,15 @@ class KOPrefs : public KPimPrefs
void usrReadConfig();
/** Write preferences to config file */
void usrWriteConfig();
void setCategoryDefaults();
void setAllDefaults();
-
+ KopiCalendarFile * getNewCalendar();
+ void deleteCalendar( int );
+ QColor defaultColor( int ) const;
protected:
void setTimeZoneIdDefault();
/** Fill empty mail fields with default values. */
void fillMailDefaults();
@@ -302,15 +329,18 @@ class KOPrefs : public KPimPrefs
bool mEVshowChanged;
bool mWTshowDetails;
bool mWTshowCreated;
bool mWTshowChanged;
int mCurrentDisplayedView;
+ QPtrList<KopiCalendarFile> mCalendars;
+ int mNextAvailableCalendar;
private:
QDict<QColor> mCategoryColors;
+ QArray<KopiCalendarFile*> mDefCalColors;
QColor mDefaultCategoryColor;
QFont mDefaultTimeBarFont;
QFont mDefaultViewFont;
QFont mDefaultMonthViewFont;