summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-04-21 17:43:18 (UTC)
committer zautrix <zautrix>2005-04-21 17:43:18 (UTC)
commitfd38343ef53c9b2a48208f747100579703cc1814 (patch) (unidiff)
tree2aeabdf01986d59d72044615b952a65b4d8ba292
parent0a13a3490ec3bf4735e3435f80f58fa7d50b4448 (diff)
downloadkdepimpi-fd38343ef53c9b2a48208f747100579703cc1814.zip
kdepimpi-fd38343ef53c9b2a48208f747100579703cc1814.tar.gz
kdepimpi-fd38343ef53c9b2a48208f747100579703cc1814.tar.bz2
backup impl
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt13
-rw-r--r--korganizer/mainwindow.cpp30
-rw-r--r--libkdepim/kcmconfigs/kdepimconfigwidget.cpp28
-rw-r--r--libkdepim/kpimglobalprefs.cpp6
-rw-r--r--libkdepim/kpimprefs.cpp3
-rw-r--r--libkdepim/kpimprefs.h1
-rw-r--r--microkde/kapplication.cpp120
-rw-r--r--microkde/kapplication.h1
8 files changed, 196 insertions, 6 deletions
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index fa18304..9e9a1a1 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -1324,37 +1324,50 @@
1324{ "%1h","%1std" }, 1324{ "%1h","%1std" },
1325{ "%1min","%1min" }, 1325{ "%1min","%1min" },
1326{ "( %1 before )","( %1 vorher )" }, 1326{ "( %1 before )","( %1 vorher )" },
1327{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" }, 1327{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" },
1328{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" }, 1328{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" },
1329{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." }, 1329{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." },
1330{ "Show Sync Events","Zeige Sync-Ereignisse" }, 1330{ "Show Sync Events","Zeige Sync-Ereignisse" },
1331{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" }, 1331{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" },
1332{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" }, 1332{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" },
1333{ " on "," am " }, 1333{ " on "," am " },
1334{ "On: ","Am: " }, 1334{ "On: ","Am: " },
1335{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" }, 1335{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" },
1336{ "Start/Stop todo...","Starte/Stoppe Todo..." }, 1336{ "Start/Stop todo...","Starte/Stoppe Todo..." },
1337{ "Color for running todos:","Farbe für laufende Todos:" }, 1337{ "Color for running todos:","Farbe für laufende Todos:" },
1338{ "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" }, 1338{ "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" },
1339{ "Todo is started","Todo is gestarted" }, 1339{ "Todo is started","Todo is gestarted" },
1340{ "Stop todo","Stoppe Todo" }, 1340{ "Stop todo","Stoppe Todo" },
1341{ "Todo is stopped","Todo ist gestoppt" }, 1341{ "Todo is stopped","Todo ist gestoppt" },
1342{ "Start todo","Starte Todo" }, 1342{ "Start todo","Starte Todo" },
1343{ "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" }, 1343{ "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" },
1344{ "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nMöchten Sie alle\nUntertodos auch klonen?" }, 1344{ "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nMöchten Sie alle\nUntertodos auch klonen?" },
1345{ "Todo has subtodos","Todo hat Untertodos" }, 1345{ "Todo has subtodos","Todo hat Untertodos" },
1346{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" }, 1346{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" },
1347{ "Colors","Farben" }, 1347{ "Colors","Farben" },
1348{ "Click on new parent item","Klicke auf neues Übertodo" }, 1348{ "Click on new parent item","Klicke auf neues Übertodo" },
1349{ "Reparenting aborted!","Übertodo setzen abgebrochen" }, 1349{ "Reparenting aborted!","Übertodo setzen abgebrochen" },
1350{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" }, 1350{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" },
1351{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" }, 1351{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" },
1352{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" }, 1352{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" },
1353{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, 1353{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" },
1354{ "times","Zeiten" }, 1354{ "times","Zeiten" },
1355{ "The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?","Das Todo\n%1\nhat Untertodos!\nMöchten Sie die Kategorien\nauch für alle Untertodos setzen?" }, 1355{ "The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?","Das Todo\n%1\nhat Untertodos!\nMöchten Sie die Kategorien\nauch für alle Untertodos setzen?" },
1356{ "Backup enabled","Backup angeschaltet" },
1357{ "Use standard backup dir","Standard Backupverzeichnis" },
1358{ "Number of Backups:","Anzahl der Backups" },
1359{ "Make backup every ","Mache ein Backup alle " },
1360{ " days"," Tage" },
1361{ "","" },
1362{ "","" },
1363{ "","" },
1364{ "","" },
1365{ "","" },
1366{ "","" },
1367{ "","" },
1368{ "","" },
1356{ "","" }, 1369{ "","" },
1357{ "","" }, 1370{ "","" },
1358{ "","" }, 1371{ "","" },
1359{ "","" }, 1372{ "","" },
1360{ "","" }, 1373{ "","" },
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 68e5e5a..9ad0694 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -32,64 +32,65 @@
32#include <qmenubar.h> 32#include <qmenubar.h>
33#include <qtoolbar.h> 33#include <qtoolbar.h>
34#include <qapplication.h> 34#include <qapplication.h>
35//#include <resource.h> 35//#include <resource.h>
36 36
37#endif 37#endif
38#include <libkcal/calendarlocal.h> 38#include <libkcal/calendarlocal.h>
39#include <libkcal/todo.h> 39#include <libkcal/todo.h>
40#include <libkcal/phoneformat.h> 40#include <libkcal/phoneformat.h>
41#include <libkdepim/ksyncprofile.h> 41#include <libkdepim/ksyncprofile.h>
42#include <libkdepim/phoneaccess.h> 42#include <libkdepim/phoneaccess.h>
43#include <libkcal/kincidenceformatter.h> 43#include <libkcal/kincidenceformatter.h>
44#include <libkdepim/kpimglobalprefs.h> 44#include <libkdepim/kpimglobalprefs.h>
45 45
46#include "calendarview.h" 46#include "calendarview.h"
47#include "koviewmanager.h" 47#include "koviewmanager.h"
48#include "datenavigator.h" 48#include "datenavigator.h"
49#include "koagendaview.h" 49#include "koagendaview.h"
50#include "koagenda.h" 50#include "koagenda.h"
51#include "kodialogmanager.h" 51#include "kodialogmanager.h"
52#include "kdialogbase.h" 52#include "kdialogbase.h"
53#include "kapplication.h" 53#include "kapplication.h"
54#include "kofilterview.h" 54#include "kofilterview.h"
55#include "kstandarddirs.h" 55#include "kstandarddirs.h"
56#include "koprefs.h" 56#include "koprefs.h"
57#include "kfiledialog.h" 57#include "kfiledialog.h"
58#include "koglobals.h" 58#include "koglobals.h"
59#include "kglobal.h" 59#include "kglobal.h"
60#include "ktoolbar.h" 60#include "ktoolbar.h"
61#include "klocale.h" 61#include "klocale.h"
62#include "kconfig.h" 62#include "kconfig.h"
63#include "externalapphandler.h" 63#include "externalapphandler.h"
64#include <kglobalsettings.h>
64 65
65using namespace KCal; 66using namespace KCal;
66#ifndef _WIN32_ 67#ifndef _WIN32_
67#include <unistd.h> 68#include <unistd.h>
68#else 69#else
69#ifdef _OL_IMPORT_ 70#ifdef _OL_IMPORT_
70#include "koimportoldialog.h" 71#include "koimportoldialog.h"
71#endif 72#endif
72#endif 73#endif
73#include "mainwindow.h" 74#include "mainwindow.h"
74 75
75 76
76class KOex2phonePrefs : public QDialog 77class KOex2phonePrefs : public QDialog
77{ 78{
78 public: 79 public:
79 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 80 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
80 QDialog( parent, name, true ) 81 QDialog( parent, name, true )
81 { 82 {
82 setCaption( i18n("Export to phone options") ); 83 setCaption( i18n("Export to phone options") );
83 QVBoxLayout* lay = new QVBoxLayout( this ); 84 QVBoxLayout* lay = new QVBoxLayout( this );
84 lay->setSpacing( 3 ); 85 lay->setSpacing( 3 );
85 lay->setMargin( 3 ); 86 lay->setMargin( 3 );
86 QLabel *lab; 87 QLabel *lab;
87 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 88 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
88 lab->setAlignment (AlignHCenter ); 89 lab->setAlignment (AlignHCenter );
89 QHBox* temphb; 90 QHBox* temphb;
90 temphb = new QHBox( this ); 91 temphb = new QHBox( this );
91 new QLabel( i18n("I/O device: "), temphb ); 92 new QLabel( i18n("I/O device: "), temphb );
92 mPhoneDevice = new QLineEdit( temphb); 93 mPhoneDevice = new QLineEdit( temphb);
93 lay->addWidget( temphb ); 94 lay->addWidget( temphb );
94 temphb = new QHBox( this ); 95 temphb = new QHBox( this );
95 new QLabel( i18n("Connection: "), temphb ); 96 new QLabel( i18n("Connection: "), temphb );
@@ -1772,64 +1773,93 @@ void MainWindow::saveOnClose()
1772 save(); 1773 save();
1773} 1774}
1774void MainWindow::slotModifiedChanged( bool changed ) 1775void MainWindow::slotModifiedChanged( bool changed )
1775{ 1776{
1776 if ( mBlockAtStartup ) 1777 if ( mBlockAtStartup )
1777 return; 1778 return;
1778 1779
1779 int msec; 1780 int msec;
1780 // we store the changes after 1 minute, 1781 // we store the changes after 1 minute,
1781 // and for safety reasons after 10 minutes again 1782 // and for safety reasons after 10 minutes again
1782 if ( !mSyncManager->blockSave() ) 1783 if ( !mSyncManager->blockSave() )
1783 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1784 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1784 else 1785 else
1785 msec = 1000 * 600; 1786 msec = 1000 * 600;
1786 mSaveTimer.start( msec, true ); // 1 minute 1787 mSaveTimer.start( msec, true ); // 1 minute
1787 qDebug("KO: Saving File in %d secs!", msec/1000); 1788 qDebug("KO: Saving File in %d secs!", msec/1000);
1788 mCalendarModifiedFlag = true; 1789 mCalendarModifiedFlag = true;
1789} 1790}
1790void MainWindow::saveStopTimer() 1791void MainWindow::saveStopTimer()
1791{ 1792{
1792 mSaveTimer.stop(); 1793 mSaveTimer.stop();
1793} 1794}
1794void MainWindow::save() 1795void MainWindow::save()
1795{ 1796{
1796 if ( !mCalendarModifiedFlag ) { 1797 if ( !mCalendarModifiedFlag ) {
1797 qDebug("KO: Calendar not modified. Nothing saved."); 1798 qDebug("KO: Calendar not modified. Nothing saved.");
1798 return; 1799 return;
1799 } 1800 }
1800 if ( mSyncManager->blockSave() ) 1801 if ( mSyncManager->blockSave() )
1801 return; 1802 return;
1802 mSyncManager->setBlockSave(true); 1803 mSyncManager->setBlockSave(true);
1803 if ( mView->checkFileVersion( defaultFileName()) ) { 1804 if ( mView->checkFileVersion( defaultFileName()) ) {
1805 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){
1806 QDate reference ( 2000,1,1);
1807 int daysTo = reference.daysTo ( QDate::currentDate() );
1808 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) {
1809 setCaption(i18n("KO/Pi:Creating backup ... please wait ..." ));
1810 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate);
1811 // we need the file path, the backup dir and the number of bups as param
1812 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir;
1813 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir)
1814 bupDir = KGlobalSettings::backupDataDir();
1815 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );//55;//call backup
1816 if ( retval == 0 ) {
1817 qDebug("KO: Backup cancelled. Will try again tomorrow ");
1818 // retval == 0 : backup skipped for today, try again tomorrow
1819 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1;
1820 } else if ( retval == 1 ){
1821 qDebug("KO: Backup created.");
1822 // backup ok
1823 KOPrefs::instance()->mLastBackupDate = daysTo;
1824
1825 } else if ( retval == 2 ){
1826 qDebug("KO: Backup globally cancelled.");
1827 // backup globally cancelled
1828 KPimGlobalPrefs::instance()->mBackupEnabled = false;
1829 }
1830 // retval == 3: do nothing, try again later
1831 }
1832 ; // KPimGlobalPrefs::instance()->mLastBackupDate
1833 }
1804 QTime neededSaveTime = QDateTime::currentDateTime().time(); 1834 QTime neededSaveTime = QDateTime::currentDateTime().time();
1805 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 1835 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
1806 qDebug("KO: Start saving data to file!"); 1836 qDebug("KO: Start saving data to file!");
1807 mView->saveCalendar( defaultFileName() ); 1837 mView->saveCalendar( defaultFileName() );
1808 mCalendarModifiedFlag = false; 1838 mCalendarModifiedFlag = false;
1809 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 1839 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
1810 qDebug("KO: Needed %d ms for saving.",msNeeded ); 1840 qDebug("KO: Needed %d ms for saving.",msNeeded );
1811 QString savemes; 1841 QString savemes;
1812 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 1842 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
1813 setCaption(savemes); 1843 setCaption(savemes);
1814 } else 1844 } else
1815 setCaption(i18n("Saving cancelled!")); 1845 setCaption(i18n("Saving cancelled!"));
1816 mSyncManager->setBlockSave( false ); 1846 mSyncManager->setBlockSave( false );
1817} 1847}
1818 1848
1819void MainWindow::keyReleaseEvent ( QKeyEvent * e) 1849void MainWindow::keyReleaseEvent ( QKeyEvent * e)
1820{ 1850{
1821 if ( !e->isAutoRepeat() ) { 1851 if ( !e->isAutoRepeat() ) {
1822 mFlagKeyPressed = false; 1852 mFlagKeyPressed = false;
1823 } 1853 }
1824} 1854}
1825void MainWindow::keyPressEvent ( QKeyEvent * e ) 1855void MainWindow::keyPressEvent ( QKeyEvent * e )
1826{ 1856{
1827 qApp->processEvents(); 1857 qApp->processEvents();
1828 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 1858 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
1829 e->ignore(); 1859 e->ignore();
1830 // qDebug(" ignore %d",e->isAutoRepeat() ); 1860 // qDebug(" ignore %d",e->isAutoRepeat() );
1831 return; 1861 return;
1832 } 1862 }
1833 if (! e->isAutoRepeat() ) 1863 if (! e->isAutoRepeat() )
1834 mFlagKeyPressed = true; 1864 mFlagKeyPressed = true;
1835 KOPrefs *p = KOPrefs::instance(); 1865 KOPrefs *p = KOPrefs::instance();
diff --git a/libkdepim/kcmconfigs/kdepimconfigwidget.cpp b/libkdepim/kcmconfigs/kdepimconfigwidget.cpp
index fbfbc45..93538ec 100644
--- a/libkdepim/kcmconfigs/kdepimconfigwidget.cpp
+++ b/libkdepim/kcmconfigs/kdepimconfigwidget.cpp
@@ -103,84 +103,93 @@ KDEPIMConfigWidget::KDEPIMConfigWidget(KPimGlobalPrefs *prefs, QWidget *parent,
103 QVBoxLayout *topLayout = new QVBoxLayout( this, 0, 103 QVBoxLayout *topLayout = new QVBoxLayout( this, 0,
104 KDialog::spacingHint() ); 104 KDialog::spacingHint() );
105 105
106 tabWidget = new QTabWidget( this ); 106 tabWidget = new QTabWidget( this );
107 topLayout->addWidget( tabWidget ); 107 topLayout->addWidget( tabWidget );
108 108
109 109
110 setupLocaleTab(); 110 setupLocaleTab();
111 setupLocaleDateTab(); 111 setupLocaleDateTab();
112 setupTimeZoneTab(); 112 setupTimeZoneTab();
113 setupExternalAppTab(); 113 setupExternalAppTab();
114 setupStoreTab(); 114 setupStoreTab();
115 setupBackupTab(); 115 setupBackupTab();
116} 116}
117void KDEPIMConfigWidget::showTimeZoneTab() 117void KDEPIMConfigWidget::showTimeZoneTab()
118{ 118{
119 tabWidget->setCurrentPage ( 3 ) ; 119 tabWidget->setCurrentPage ( 3 ) ;
120} 120}
121void KDEPIMConfigWidget::setupBackupTab() 121void KDEPIMConfigWidget::setupBackupTab()
122{ 122{
123 QVBox *colorPage = new QVBox( this ); 123 QVBox *colorPage = new QVBox( this );
124 tabWidget->addTab( colorPage, i18n( "Backup" ) ); 124 tabWidget->addTab( colorPage, i18n( "Backup" ) );
125 QWidget* topFrame = new QWidget( colorPage ); 125 QWidget* topFrame = new QWidget( colorPage );
126 QVBoxLayout *topLayout = new QVBoxLayout(topFrame); 126 QVBoxLayout *topLayout = new QVBoxLayout(topFrame);
127 KPrefsWidBool *sb = addWidBool(i18n("Backup enabled"), 127 KPrefsWidBool *sb = addWidBool(i18n("Backup enabled"),
128 &(KPimGlobalPrefs::instance()->mBackupEnabled),topFrame); 128 &(KPimGlobalPrefs::instance()->mBackupEnabled),topFrame);
129 topLayout->addWidget((QWidget*)sb->checkBox()); 129 topLayout->addWidget((QWidget*)sb->checkBox());
130 QWidget* bupFrame = new QWidget( topFrame ); 130 QWidget* bupFrame = new QWidget( topFrame );
131 topLayout->addWidget((bupFrame)); 131 topLayout->addWidget((bupFrame));
132 QObject::connect ( sb->checkBox(), SIGNAL (toggled ( bool ) ), bupFrame, SLOT ( setEnabled( bool ) ) ); 132 QObject::connect ( sb->checkBox(), SIGNAL (toggled ( bool ) ), bupFrame, SLOT ( setEnabled( bool ) ) );
133 QVBoxLayout *bupLayout = new QVBoxLayout(bupFrame); 133 QVBoxLayout *bupLayout = new QVBoxLayout(bupFrame);
134 sb = addWidBool(i18n("Use standard backup dir"), 134 sb = addWidBool(i18n("Use standard backup dir"),
135 &(KPimGlobalPrefs::instance()->mBackupEnabled),bupFrame); 135 &(KPimGlobalPrefs::instance()->mBackupUseDefaultDir),bupFrame);
136 bupLayout->addWidget((QWidget*)sb->checkBox()); 136 bupLayout->addWidget((QWidget*)sb->checkBox());
137 mBackupUrl = new KURLRequester( bupFrame ); 137 mBackupUrl = new KURLRequester( bupFrame );
138 mBackupUrl->setURL( KGlobalSettings::backupDataDir() ); 138 mBackupUrl->setURL( KGlobalSettings::backupDataDir() );
139 QObject::connect ( sb->checkBox(), SIGNAL (toggled ( bool ) ), mBackupUrl ,SLOT ( setDisabled( bool ) ) ); 139 QObject::connect ( sb->checkBox(), SIGNAL (toggled ( bool ) ), mBackupUrl ,SLOT ( setDisabled( bool ) ) );
140 bupLayout->addWidget( mBackupUrl ); 140 bupLayout->addWidget( mBackupUrl );
141 141
142 142 mBackupUrl->setEnabled( !KPimGlobalPrefs::instance()->mBackupUseDefaultDir );
143 bupFrame->setEnabled( KPimGlobalPrefs::instance()->mBackupEnabled );
143 QHBox *dummy = new QHBox(bupFrame); 144 QHBox *dummy = new QHBox(bupFrame);
144 new QLabel(i18n("Number of Backups:"),dummy); 145 new QLabel(i18n("Number of Backups:"),dummy);
145 mBackupNumbersSpin = new QSpinBox(1,21,1,dummy); 146 mBackupNumbersSpin = new QSpinBox(1,21,1,dummy);
146 new QLabel(i18n(" "),dummy); 147 new QLabel(i18n(" "),dummy);
147 bupLayout->addWidget( dummy ); 148 bupLayout->addWidget( dummy );
148 149
149 dummy = new QHBox(bupFrame); 150 dummy = new QHBox(bupFrame);
150 new QLabel(i18n("Make backup every "),dummy); 151 new QLabel(i18n("Make backup every "),dummy);
151 mBackupDayCountSpin = new QSpinBox(1,28,1,dummy); 152 mBackupDayCountSpin = new QSpinBox(1,28,1,dummy);
152 new QLabel(i18n(" days"),dummy); 153 new QLabel(i18n(" days"),dummy);
153 new QLabel(i18n(" "),dummy); 154 new QLabel(i18n(" "),dummy);
154 bupLayout->addWidget( dummy ); 155 bupLayout->addWidget( dummy );
156 QString localKdeDir;
157 localKdeDir = readEnvPath("LOCALMICROKDEHOME");
158 if ( ! localKdeDir.isEmpty() ) {
159 sb->checkBox()->setEnabled( false );
160 sb->checkBox()->setChecked( true );
161 mBackupUrl->setEnabled( false );
162 KPimGlobalPrefs::instance()->mBackupUseDefaultDir = true;
163 }
155 164
156} 165}
157void KDEPIMConfigWidget::setupStoreTab() 166void KDEPIMConfigWidget::setupStoreTab()
158{ 167{
159 QVBox *colorPage = new QVBox( this ); 168 QVBox *colorPage = new QVBox( this );
160 tabWidget->addTab( colorPage, i18n( "Colors" ) ); 169 tabWidget->addTab( colorPage, i18n( "Colors" ) );
161 QWidget* cw = new QWidget( colorPage ); 170 QWidget* cw = new QWidget( colorPage );
162 KPrefsWidColor *holidayColor = 171 KPrefsWidColor *holidayColor =
163 addWidColor(i18n("Alternating background of list views"), 172 addWidColor(i18n("Alternating background of list views"),
164 &(KPimGlobalPrefs::instance()->mAlternateColor),cw); 173 &(KPimGlobalPrefs::instance()->mAlternateColor),cw);
165 QHBoxLayout *topLayout = new QHBoxLayout(cw); 174 QHBoxLayout *topLayout = new QHBoxLayout(cw);
166 topLayout->addWidget(holidayColor->label()); 175 topLayout->addWidget(holidayColor->label());
167 topLayout->addWidget( (QWidget* )holidayColor->button()); 176 topLayout->addWidget( (QWidget* )holidayColor->button());
168 177
169 178
170 QVBox *storePage = new QVBox( this ); 179 QVBox *storePage = new QVBox( this );
171 new QLabel( i18n("Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail").arg(KGlobal::dirs()->localkdedir()), storePage ); 180 new QLabel( i18n("Your current storage dir is:\n%1\nYour mail is stored in:\n(storagedir)/apps/kopiemail/localmail").arg(KGlobal::dirs()->localkdedir()), storePage );
172 new QLabel( i18n("<b>New data storage dir:</b>"), storePage ); 181 new QLabel( i18n("<b>New data storage dir:</b>"), storePage );
173 mStoreUrl = new KURLRequester( storePage ); 182 mStoreUrl = new KURLRequester( storePage );
174 mStoreUrl->setURL( KGlobal::dirs()->localkdedir() ); 183 mStoreUrl->setURL( KGlobal::dirs()->localkdedir() );
175#ifdef DESKTOP_VERSION 184#ifdef DESKTOP_VERSION
176 QString confFile = qApp->applicationDirPath ()+ "/.microkdehome" ; 185 QString confFile = qApp->applicationDirPath ()+ "/.microkdehome" ;
177 QFileInfo fi ( confFile ); 186 QFileInfo fi ( confFile );
178 if ( fi.exists() ) { 187 if ( fi.exists() ) {
179 KConfig cfg ( confFile ); 188 KConfig cfg ( confFile );
180 cfg.setGroup("Global"); 189 cfg.setGroup("Global");
181 QString localKdeDir = cfg.readEntry( "MICROKDEHOME", "x_x_x" ); 190 QString localKdeDir = cfg.readEntry( "MICROKDEHOME", "x_x_x" );
182 if ( localKdeDir != "x_x_x" ) { 191 if ( localKdeDir != "x_x_x" ) {
183 mStoreUrl->setURL( localKdeDir ); 192 mStoreUrl->setURL( localKdeDir );
184 qDebug("Reading config from %s ", confFile.latin1()); 193 qDebug("Reading config from %s ", confFile.latin1());
185 } 194 }
186 } 195 }
@@ -777,124 +786,131 @@ void KDEPIMConfigWidget::updateClientWidgets()
777 786
778 787
779 mClient->setCurrentItem(mCurrentClient); 788 mClient->setCurrentItem(mCurrentClient);
780 789
781 790
782 // enable/disable the extra message/parameter field 791 // enable/disable the extra message/parameter field
783 if (mCurrentApp == ExternalAppHandler::EMAIL) 792 if (mCurrentApp == ExternalAppHandler::EMAIL)
784 { 793 {
785 } 794 }
786 else 795 else
787 { 796 {
788 mMessage2->setText( "" ); 797 mMessage2->setText( "" );
789 mParameters2->setText( "" ); 798 mParameters2->setText( "" );
790 } 799 }
791 800
792 if (enabled == true) { 801 if (enabled == true) {
793 mMessage2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL); 802 mMessage2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL);
794 mParameters2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL); 803 mParameters2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL);
795 } 804 }
796 805
797 806
798 blockSignals( blocked ); 807 blockSignals( blocked );
799 808
800} 809}
801 810
802void KDEPIMConfigWidget::usrReadConfig() 811void KDEPIMConfigWidget::usrReadConfig()
803{ 812{
804 KPimGlobalPrefs* prefs = KPimGlobalPrefs::instance(); 813 KPimGlobalPrefs* prefs = KPimGlobalPrefs::instance();
805 814
806 bool blocked = signalsBlocked(); 815 bool blocked = signalsBlocked();
807 blockSignals( true ); 816 blockSignals( true );
808 817
818 if (KPimGlobalPrefs::instance()->mBackupUseDefaultDir )
819 mBackupUrl->setURL( KGlobalSettings::backupDataDir() );
820 else
821 mBackupUrl->setURL(prefs->mBackupDatadir);
822 mBackupNumbersSpin->setValue( prefs->mBackupNumbers );
823 mBackupDayCountSpin->setValue( prefs->mBackupDayCount);
824
809 QString dummy = prefs->mUserDateFormatLong; 825 QString dummy = prefs->mUserDateFormatLong;
810 mUserDateFormatLong->setText(dummy.replace( QRegExp("K"), QString(",") )); 826 mUserDateFormatLong->setText(dummy.replace( QRegExp("K"), QString(",") ));
811 dummy = prefs->mUserDateFormatShort; 827 dummy = prefs->mUserDateFormatShort;
812 mUserDateFormatShort->setText(dummy.replace( QRegExp("K"), QString(",") )); 828 mUserDateFormatShort->setText(dummy.replace( QRegExp("K"), QString(",") ));
813 829
814 QDate current ( 2001, 1,1); 830 QDate current ( 2001, 1,1);
815 mStartDateSavingEdit->setDate(current.addDays(prefs->mDaylightsavingStart-1)); 831 mStartDateSavingEdit->setDate(current.addDays(prefs->mDaylightsavingStart-1));
816 mEndDateSavingEdit->setDate(current.addDays(prefs->mDaylightsavingEnd-1)); 832 mEndDateSavingEdit->setDate(current.addDays(prefs->mDaylightsavingEnd-1));
817 setCombo(mTimeZoneCombo,i18n(prefs->mTimeZoneId)); 833 setCombo(mTimeZoneCombo,i18n(prefs->mTimeZoneId));
818 834
819
820
821
822 mEmailClient = prefs->mEmailClient; 835 mEmailClient = prefs->mEmailClient;
823 mEmailOtherChannel = prefs->mEmailOtherChannel; 836 mEmailOtherChannel = prefs->mEmailOtherChannel;
824 mEmailOtherMessage = prefs->mEmailOtherMessage; 837 mEmailOtherMessage = prefs->mEmailOtherMessage;
825 mEmailOtherMessageParameters = prefs->mEmailOtherMessageParameters; 838 mEmailOtherMessageParameters = prefs->mEmailOtherMessageParameters;
826 mEmailOtherMessage2 = prefs->mEmailOtherMessage2; 839 mEmailOtherMessage2 = prefs->mEmailOtherMessage2;
827 mEmailOtherMessageParameters2 = prefs->mEmailOtherMessageParameters2; 840 mEmailOtherMessageParameters2 = prefs->mEmailOtherMessageParameters2;
828 841
829 mPhoneClient = prefs->mPhoneClient; 842 mPhoneClient = prefs->mPhoneClient;
830 mPhoneOtherChannel = prefs->mPhoneOtherChannel; 843 mPhoneOtherChannel = prefs->mPhoneOtherChannel;
831 mPhoneOtherMessage = prefs->mPhoneOtherMessage; 844 mPhoneOtherMessage = prefs->mPhoneOtherMessage;
832 mPhoneOtherMessageParameters = prefs->mPhoneOtherMessageParameters; 845 mPhoneOtherMessageParameters = prefs->mPhoneOtherMessageParameters;
833 846
834 mFaxClient = prefs->mFaxClient; 847 mFaxClient = prefs->mFaxClient;
835 mFaxOtherChannel = prefs->mFaxOtherChannel; 848 mFaxOtherChannel = prefs->mFaxOtherChannel;
836 mFaxOtherMessage = prefs->mFaxOtherMessage; 849 mFaxOtherMessage = prefs->mFaxOtherMessage;
837 mFaxOtherMessageParameters = prefs->mFaxOtherMessageParameters; 850 mFaxOtherMessageParameters = prefs->mFaxOtherMessageParameters;
838 851
839 mSMSClient = prefs->mSMSClient; 852 mSMSClient = prefs->mSMSClient;
840 mSMSOtherChannel = prefs->mSMSOtherChannel; 853 mSMSOtherChannel = prefs->mSMSOtherChannel;
841 mSMSOtherMessage = prefs->mSMSOtherMessage; 854 mSMSOtherMessage = prefs->mSMSOtherMessage;
842 mSMSOtherMessageParameters = prefs->mSMSOtherMessageParameters; 855 mSMSOtherMessageParameters = prefs->mSMSOtherMessageParameters;
843 856
844 mPagerClient = prefs->mPagerClient; 857 mPagerClient = prefs->mPagerClient;
845 mPagerOtherChannel = prefs->mPagerOtherChannel; 858 mPagerOtherChannel = prefs->mPagerOtherChannel;
846 mPagerOtherMessage = prefs->mPagerOtherMessage; 859 mPagerOtherMessage = prefs->mPagerOtherMessage;
847 mPagerOtherMessageParameters = prefs->mPagerOtherMessageParameters; 860 mPagerOtherMessageParameters = prefs->mPagerOtherMessageParameters;
848 861
849 mSipClient = prefs->mSipClient; 862 mSipClient = prefs->mSipClient;
850 mSipOtherChannel = prefs->mSipOtherChannel; 863 mSipOtherChannel = prefs->mSipOtherChannel;
851 mSipOtherMessage = prefs->mSipOtherMessage; 864 mSipOtherMessage = prefs->mSipOtherMessage;
852 mSipOtherMessageParameters = prefs->mSipOtherMessageParameters; 865 mSipOtherMessageParameters = prefs->mSipOtherMessageParameters;
853 866
854 mCurrentApp = ExternalAppHandler::EMAIL; 867 mCurrentApp = ExternalAppHandler::EMAIL;
855 mCurrentClient = mEmailClient; 868 mCurrentClient = mEmailClient;
856 869
857 updateClientWidgets(); 870 updateClientWidgets();
858 871
859 blockSignals( blocked ); 872 blockSignals( blocked );
860 873
861} 874}
862 875
863void KDEPIMConfigWidget::usrWriteConfig() 876void KDEPIMConfigWidget::usrWriteConfig()
864{ 877{
865 KPimGlobalPrefs* prefs = KPimGlobalPrefs::instance(); 878 KPimGlobalPrefs* prefs = KPimGlobalPrefs::instance();
866 879
867 saveEditFieldSettings(); 880 saveEditFieldSettings();
868 881
882 prefs->mBackupNumbers = mBackupNumbersSpin->value();
883 prefs->mBackupDayCount = mBackupDayCountSpin->value();
884 prefs->mBackupDatadir = mBackupUrl->url();
869 885
870 prefs->mUserDateFormatShort = mUserDateFormatShort->text().replace( QRegExp(","), QString("K") ); 886 prefs->mUserDateFormatShort = mUserDateFormatShort->text().replace( QRegExp(","), QString("K") );
871 prefs->mUserDateFormatLong = mUserDateFormatLong->text().replace( QRegExp(","), QString("K") ); 887 prefs->mUserDateFormatLong = mUserDateFormatLong->text().replace( QRegExp(","), QString("K") );
872 888
873 prefs->mTimeZoneId = mTimeZoneCombo->currentText(); 889 prefs->mTimeZoneId = mTimeZoneCombo->currentText();
874 QDate date; 890 QDate date;
875 date = mStartDateSavingEdit->date(); 891 date = mStartDateSavingEdit->date();
876 int sub = 0; 892 int sub = 0;
877 if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 ) 893 if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 )
878 sub = 1; 894 sub = 1;
879 prefs->mDaylightsavingStart = date.dayOfYear()-sub; 895 prefs->mDaylightsavingStart = date.dayOfYear()-sub;
880 date = mEndDateSavingEdit->date(); 896 date = mEndDateSavingEdit->date();
881 if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 ) 897 if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 )
882 sub = 1; 898 sub = 1;
883 else 899 else
884 sub = 0; 900 sub = 0;
885 prefs->mDaylightsavingEnd = date.dayOfYear()-sub; 901 prefs->mDaylightsavingEnd = date.dayOfYear()-sub;
886 902
887 903
888 prefs->mEmailClient = mEmailClient; 904 prefs->mEmailClient = mEmailClient;
889 prefs->mEmailOtherChannel = mEmailOtherChannel; 905 prefs->mEmailOtherChannel = mEmailOtherChannel;
890 prefs->mEmailOtherMessage = mEmailOtherMessage; 906 prefs->mEmailOtherMessage = mEmailOtherMessage;
891 prefs->mEmailOtherMessageParameters = mEmailOtherMessageParameters; 907 prefs->mEmailOtherMessageParameters = mEmailOtherMessageParameters;
892 prefs->mEmailOtherMessage2 = mEmailOtherMessage2; 908 prefs->mEmailOtherMessage2 = mEmailOtherMessage2;
893 prefs->mEmailOtherMessageParameters2 = mEmailOtherMessageParameters2; 909 prefs->mEmailOtherMessageParameters2 = mEmailOtherMessageParameters2;
894 910
895 prefs->mPhoneClient = mPhoneClient; 911 prefs->mPhoneClient = mPhoneClient;
896 prefs->mPhoneOtherChannel = mPhoneOtherChannel; 912 prefs->mPhoneOtherChannel = mPhoneOtherChannel;
897 prefs->mPhoneOtherMessage = mPhoneOtherMessage; 913 prefs->mPhoneOtherMessage = mPhoneOtherMessage;
898 prefs->mPhoneOtherMessageParameters = mPhoneOtherMessageParameters; 914 prefs->mPhoneOtherMessageParameters = mPhoneOtherMessageParameters;
899 915
900 prefs->mFaxClient = mFaxClient; 916 prefs->mFaxClient = mFaxClient;
diff --git a/libkdepim/kpimglobalprefs.cpp b/libkdepim/kpimglobalprefs.cpp
index 90321b2..9c28425 100644
--- a/libkdepim/kpimglobalprefs.cpp
+++ b/libkdepim/kpimglobalprefs.cpp
@@ -171,53 +171,59 @@ void KPimGlobalPrefs::setGlobalConfig()
171 if ( mPreferredLanguage == 4 ) 171 if ( mPreferredLanguage == 4 )
172 wt = QString::fromUtf8(line.mid( st, et-st ).latin1()); 172 wt = QString::fromUtf8(line.mid( st, et-st ).latin1());
173 else 173 else
174 wt = line.mid( st, et-st ); 174 wt = line.mid( st, et-st );
175 //qDebug("*%s* *%s* ", we.latin1(), wt.latin1()); 175 //qDebug("*%s* *%s* ", we.latin1(), wt.latin1());
176 mLocaleDict->insert( we, new QString (wt) ); 176 mLocaleDict->insert( we, new QString (wt) );
177 nbr = text.find ( "}", br ); 177 nbr = text.find ( "}", br );
178 line = text.mid( br, nbr - br ); 178 line = text.mid( br, nbr - br );
179 br = nbr+1; 179 br = nbr+1;
180 } 180 }
181 //qDebug("end *%s* ", end.latin1()); 181 //qDebug("end *%s* ", end.latin1());
182 182
183 setLocaleDict( mLocaleDict ); 183 setLocaleDict( mLocaleDict );
184 } else { 184 } else {
185 qDebug("KO: Cannot find translation file %s",fileName.latin1() ); 185 qDebug("KO: Cannot find translation file %s",fileName.latin1() );
186 } 186 }
187 } 187 }
188 } 188 }
189 189
190 KGlobal::locale()->setHore24Format( !mPreferredTime ); 190 KGlobal::locale()->setHore24Format( !mPreferredTime );
191 KGlobal::locale()->setWeekStartMonday( !mWeekStartsOnSunday ); 191 KGlobal::locale()->setWeekStartMonday( !mWeekStartsOnSunday );
192 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)mPreferredDate ); 192 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)mPreferredDate );
193 KGlobal::locale()->setLanguage( mPreferredLanguage ); 193 KGlobal::locale()->setLanguage( mPreferredLanguage );
194 QString dummy = mUserDateFormatLong; 194 QString dummy = mUserDateFormatLong;
195 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 195 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
196 dummy = mUserDateFormatShort; 196 dummy = mUserDateFormatShort;
197 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 197 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
198 KGlobal::locale()->setDaylightSaving( mUseDaylightsaving, 198 KGlobal::locale()->setDaylightSaving( mUseDaylightsaving,
199 mDaylightsavingStart, 199 mDaylightsavingStart,
200 mDaylightsavingEnd ); 200 mDaylightsavingEnd );
201 KGlobal::locale()->setTimezone( mTimeZoneId, mTimeZoneAdd30min ); 201 KGlobal::locale()->setTimezone( mTimeZoneId, mTimeZoneAdd30min );
202 KGlobalSettings::setAlternateBackgroundColor(mAlternateColor); 202 KGlobalSettings::setAlternateBackgroundColor(mAlternateColor);
203 QString localKdeDir;
204 localKdeDir = readEnvPath("LOCALMICROKDEHOME");
205 if ( ! localKdeDir.isEmpty() ) {
206 mBackupUseDefaultDir = true;
207 mBackupDatadir = KGlobalSettings::backupDataDir();
208 }
203 209
204} 210}
205KPimGlobalPrefs::~KPimGlobalPrefs() 211KPimGlobalPrefs::~KPimGlobalPrefs()
206{ 212{
207 if (sInstance == this) 213 if (sInstance == this)
208 sInstance = staticDeleterGP.setObject(0); 214 sInstance = staticDeleterGP.setObject(0);
209 else 215 else
210 qDebug("Whats this? Error in KPimGlobalPrefs::~KPimGlobalPrefs() ?"); 216 qDebug("Whats this? Error in KPimGlobalPrefs::~KPimGlobalPrefs() ?");
211 if ( mLocaleDict ) 217 if ( mLocaleDict )
212 delete mLocaleDict; 218 delete mLocaleDict;
213} 219}
214 220
215KPimGlobalPrefs *KPimGlobalPrefs::instance() 221KPimGlobalPrefs *KPimGlobalPrefs::instance()
216{ 222{
217 if ( !sInstance ) { 223 if ( !sInstance ) {
218 sInstance = staticDeleterGP.setObject( new KPimGlobalPrefs() ); 224 sInstance = staticDeleterGP.setObject( new KPimGlobalPrefs() );
219 sInstance->readConfig(); 225 sInstance->readConfig();
220 } 226 }
221 227
222 return sInstance; 228 return sInstance;
223} 229}
diff --git a/libkdepim/kpimprefs.cpp b/libkdepim/kpimprefs.cpp
index d68ccb6..714d1b7 100644
--- a/libkdepim/kpimprefs.cpp
+++ b/libkdepim/kpimprefs.cpp
@@ -21,62 +21,65 @@
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#include <kglobal.h> 31#include <kglobal.h>
32#include <kconfig.h> 32#include <kconfig.h>
33#include <klocale.h> 33#include <klocale.h>
34#include <kdebug.h> 34#include <kdebug.h>
35 35
36#include "kpimprefs.h" 36#include "kpimprefs.h"
37 37
38KPimPrefs::KPimPrefs( const QString &name ) : 38KPimPrefs::KPimPrefs( const QString &name ) :
39 KPrefs( name ) 39 KPrefs( name )
40{ 40{
41#ifdef _WIN32_ 41#ifdef _WIN32_
42 QString hdp= locateLocal("data","korganizer")+"\\\\"; 42 QString hdp= locateLocal("data","korganizer")+"\\\\";
43#else 43#else
44 QString hdp= locateLocal("data","korganizer")+"/"; 44 QString hdp= locateLocal("data","korganizer")+"/";
45#endif 45#endif
46 setCurrentGroup("SyncOptions"); 46 setCurrentGroup("SyncOptions");
47 addItemString("PassiveSyncPort",&mPassiveSyncPort,"9197" ); 47 addItemString("PassiveSyncPort",&mPassiveSyncPort,"9197" );
48 addItemString("PassiveSyncPw",&mPassiveSyncPw,"abc" ); 48 addItemString("PassiveSyncPw",&mPassiveSyncPw,"abc" );
49 addItemString("LastSyncedLocalFile", &mLastSyncedLocalFile ,hdp +"lastsync.ics" ); 49 addItemString("LastSyncedLocalFile", &mLastSyncedLocalFile ,hdp +"lastsync.ics" );
50 addItemBool("PassiveSyncWithDesktop",&mPassiveSyncWithDesktop,false ); 50 addItemBool("PassiveSyncWithDesktop",&mPassiveSyncWithDesktop,false );
51 addItemBool("PassiveSyncAutoStart",&mPassiveSyncAutoStart,false ); 51 addItemBool("PassiveSyncAutoStart",&mPassiveSyncAutoStart,false );
52 addItemInt("RingSyncAlgoPrefs",&mRingSyncAlgoPrefs,3); 52 addItemInt("RingSyncAlgoPrefs",&mRingSyncAlgoPrefs,3);
53
54 setCurrentGroup("BackupDate");
55 addItemInt("LastBackupDate",&mLastBackupDate,0);
53} 56}
54 57
55KPimPrefs::~KPimPrefs() 58KPimPrefs::~KPimPrefs()
56{ 59{
57} 60}
58 61
59void KPimPrefs::usrSetDefaults() 62void KPimPrefs::usrSetDefaults()
60{ 63{
61 setCategoryDefaults(); 64 setCategoryDefaults();
62} 65}
63 66
64void KPimPrefs::usrReadConfig() 67void KPimPrefs::usrReadConfig()
65{ 68{
66 config()->setGroup("General"); 69 config()->setGroup("General");
67 mCustomCategories = config()->readListEntry("Custom Categories"); 70 mCustomCategories = config()->readListEntry("Custom Categories");
68 if (mCustomCategories.isEmpty()) setCategoryDefaults(); 71 if (mCustomCategories.isEmpty()) setCategoryDefaults();
69} 72}
70 73
71 74
72void KPimPrefs::usrWriteConfig() 75void KPimPrefs::usrWriteConfig()
73{ 76{
74 config()->setGroup("General"); 77 config()->setGroup("General");
75 config()->writeEntry("Custom Categories",mCustomCategories); 78 config()->writeEntry("Custom Categories",mCustomCategories);
76} 79}
77 80
78void KPimPrefs::setCategoryDefaults() 81void KPimPrefs::setCategoryDefaults()
79{ 82{
80 // empty implementation 83 // empty implementation
81} 84}
82 85
diff --git a/libkdepim/kpimprefs.h b/libkdepim/kpimprefs.h
index c177bd6..bf80042 100644
--- a/libkdepim/kpimprefs.h
+++ b/libkdepim/kpimprefs.h
@@ -32,42 +32,43 @@ $Id$
32#define KPIMPREFS_H 32#define KPIMPREFS_H
33 33
34#include <qstringlist.h> 34#include <qstringlist.h>
35 35
36#include "kprefs.h" 36#include "kprefs.h"
37 37
38class KPimPrefs : public KPrefs 38class KPimPrefs : public KPrefs
39{ 39{
40 public: 40 public:
41 41
42 KPimPrefs( const QString &name = QString::null ); 42 KPimPrefs( const QString &name = QString::null );
43 43
44 virtual ~KPimPrefs(); 44 virtual ~KPimPrefs();
45 45
46 /** Set preferences to default values */ 46 /** Set preferences to default values */
47 void usrSetDefaults(); 47 void usrSetDefaults();
48 48
49 /** Read preferences from config file */ 49 /** Read preferences from config file */
50 void usrReadConfig(); 50 void usrReadConfig();
51 51
52 /** Write preferences to config file */ 52 /** Write preferences to config file */
53 void usrWriteConfig(); 53 void usrWriteConfig();
54 54
55 55
56 public: 56 public:
57 QStringList mCustomCategories; 57 QStringList mCustomCategories;
58 QString mPassiveSyncPort; 58 QString mPassiveSyncPort;
59 QString mPassiveSyncPw; 59 QString mPassiveSyncPw;
60 bool mPassiveSyncWithDesktop; 60 bool mPassiveSyncWithDesktop;
61 bool mPassiveSyncAutoStart; 61 bool mPassiveSyncAutoStart;
62 int mRingSyncAlgoPrefs; 62 int mRingSyncAlgoPrefs;
63 QString mLastSyncedLocalFile; 63 QString mLastSyncedLocalFile;
64 int mLastBackupDate;
64 65
65 66
66 protected: 67 protected:
67 virtual void setCategoryDefaults(); 68 virtual void setCategoryDefaults();
68 69
69 70
70 71
71}; 72};
72 73
73#endif 74#endif
diff --git a/microkde/kapplication.cpp b/microkde/kapplication.cpp
index 80a83e0..539397b 100644
--- a/microkde/kapplication.cpp
+++ b/microkde/kapplication.cpp
@@ -95,32 +95,152 @@ bool KApplication::convert2latin1(QString fileName)
95 text = ts.read(); 95 text = ts.read();
96 file.close(); 96 file.close();
97 if (!file.open( IO_WriteOnly ) ) { 97 if (!file.open( IO_WriteOnly ) ) {
98 return false; 98 return false;
99 } 99 }
100 QTextStream tsIn( &file ); 100 QTextStream tsIn( &file );
101 tsIn.setEncoding( QTextStream::Latin1 ); 101 tsIn.setEncoding( QTextStream::Latin1 );
102 tsIn << text.latin1(); 102 tsIn << text.latin1();
103 file.close(); 103 file.close();
104 return true; 104 return true;
105 105
106 106
107} 107}
108void KApplication::showText(QString caption, QString text) 108void KApplication::showText(QString caption, QString text)
109{ 109{
110 QDialog dia( 0, "name", true ); ; 110 QDialog dia( 0, "name", true ); ;
111 dia.setCaption( caption ); 111 dia.setCaption( caption );
112 QVBoxLayout* lay = new QVBoxLayout( &dia ); 112 QVBoxLayout* lay = new QVBoxLayout( &dia );
113 lay->setSpacing( 3 ); 113 lay->setSpacing( 3 );
114 lay->setMargin( 3 ); 114 lay->setMargin( 3 );
115 KTextEdit tb ( &dia ); 115 KTextEdit tb ( &dia );
116 tb.setWordWrap( QMultiLineEdit::WidgetWidth ); 116 tb.setWordWrap( QMultiLineEdit::WidgetWidth );
117 lay->addWidget( &tb ); 117 lay->addWidget( &tb );
118 tb.setText( text ); 118 tb.setText( text );
119#ifdef DESKTOP_VERSION 119#ifdef DESKTOP_VERSION
120 dia.resize( 640, 480); 120 dia.resize( 640, 480);
121#else 121#else
122 dia.showMaximized(); 122 dia.showMaximized();
123#endif 123#endif
124 dia.exec(); 124 dia.exec();
125 125
126} 126}
127
128#include <qlabel.h>
129#include <qpushbutton.h>
130#include <qlayout.h>
131#include <qdir.h>
132#include <qradiobutton.h>
133#include <qbuttongroup.h>
134#include "kglobal.h"
135#include "klocale.h"
136
137class KBackupPrefs : public QDialog
138{
139 public:
140 KBackupPrefs( QString message , QWidget *parent=0, const char *name=0 ) :
141 QDialog( parent, name, true )
142 {
143 setCaption( i18n("Backup Failed!") );
144 QVBoxLayout* lay = new QVBoxLayout( this );
145 lay->setSpacing( 3 );
146 lay->setMargin( 3 );
147 QLabel * lab = new QLabel( message, this );
148 lay->addWidget( lab );
149 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Choose action"), this );
150 lay->addWidget( format );
151 format->setExclusive ( true ) ;
152 vcal = new QRadioButton(i18n("Try again now"), format );
153 tcal = new QRadioButton(i18n("Try again later"), format );
154 ical = new QRadioButton(i18n("Try again tomorrow"), format );
155 ocal = new QRadioButton(i18n("Disable backup"), format );
156 vcal->setChecked( true );
157 QPushButton * ok = new QPushButton( i18n("OK"), this );
158 lay->addWidget(ok );
159 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
160 }
161
162 bool again() { return vcal->isChecked(); }
163 bool later() { return tcal->isChecked(); }
164 bool againTomorrow() { return ical->isChecked(); }
165private:
166 QRadioButton* vcal, *ical, *ocal, *tcal;
167};
168int KApplication::createBackup( QString fn, QString dp, int numBup )
169{
170 if ( numBup < 1) return 3;
171 int ret = 3;
172 qDebug("KApplication::createBackup %s --- %s --- %d", fn.latin1(), dp.latin1(), numBup);
173 QDir bupDir ( dp );
174 bool tryAgain = true;
175 while ( tryAgain ) {
176 if ( !bupDir.exists() ) {
177 KBackupPrefs noDir( i18n("<b>Backup directory does not exist: </b>") + dp.right(30));
178 if ( !noDir.exec() ) return 3;
179 if ( noDir.againTomorrow() ) {
180 return 0;
181 } else if ( noDir.later() ) {
182 return 3;
183 } else if ( !noDir.again() ) {
184 return 2;
185 }
186 } else {
187 tryAgain = false;
188 }
189 }
190 // we have a valid dir!
191 QStringList allFileList = bupDir.entryList(QDir::Files);
192 QFileInfo fileInfo ( fn );
193 QString fName = fileInfo.fileName ();
194 QStringList fileList;
195
196 int i;
197 for ( i = 0; i < allFileList.count(); ++i ) {
198 QString fi = allFileList[i];
199 if ( fi. find( fName ) > -1 )
200 fileList.append( fi );
201 }
202 qDebug("%d backup files exist ", fileList.count());
203 int count = fileList.count();
204 fileList.sort();
205 int remCount = 0;
206 while ( count >= numBup ) {
207 QString fnr = dp + "/"+fileList[remCount];
208 QFile::remove( fnr );
209 --count;
210 ++remCount;
211 }
212 QDateTime mRunStart = QDateTime::currentDateTime();
213 QString file = "%1%2%3-%4%5%6-";
214 file = file.arg( mRunStart.date().year(), 4).arg( mRunStart.date().month(),2 ).arg( mRunStart.date().day(), 2 ).arg( mRunStart.time().hour(),2 ).arg( mRunStart.time().minute(),2 ).arg( mRunStart.time().second(),2 );
215 file.replace ( QRegExp (" "), "0" );
216 file += fName ;
217 file = dp + "/"+file;
218 QString command;
219 int res = 0;
220#ifdef _WIN32_
221 command = "xcopy "+ fn+ " "+file;
222 command = QDir::convertSeparators( command );
223#else
224 command = "cp "+ fn+ " "+file;
225#endif
226 qDebug("command %s ",command.latin1() );
227 tryAgain = true;
228 while ( tryAgain ) {
229 res = system ( command.latin1() );
230 qDebug("copy result %d ", res);
231 if ( res != 0 ) {
232 KBackupPrefs noDir( i18n("<b>The backup copy command failed!</b>"));
233 if ( !noDir.exec() ) return 3;
234 if ( noDir.againTomorrow() ) {
235 return 0;
236 } else if ( noDir.later() ) {
237 return 3;
238 } else if ( !noDir.again() ) {
239 return 2;
240 }
241 } else {
242 tryAgain = false;
243 }
244 }
245 return 1;
246}
diff --git a/microkde/kapplication.h b/microkde/kapplication.h
index f7eb1ef..de5a084 100644
--- a/microkde/kapplication.h
+++ b/microkde/kapplication.h
@@ -1,31 +1,32 @@
1#ifndef MINIKDE_KAPPLICATION_H 1#ifndef MINIKDE_KAPPLICATION_H
2#define MINIKDE_KAPPLICATION_H 2#define MINIKDE_KAPPLICATION_H
3 3
4#include "qstring.h" 4#include "qstring.h"
5#include <qdialog.h> 5#include <qdialog.h>
6#ifdef QDialog 6#ifdef QDialog
7#undef QDialog 7#undef QDialog
8#endif 8#endif
9 9
10class KApplication 10class KApplication
11{ 11{
12 public: 12 public:
13 static int random(); 13 static int random();
14 14
15//US 15//US
16 /** 16 /**
17 * Generates a random string. It operates in the range [A-Za-z0-9] 17 * Generates a random string. It operates in the range [A-Za-z0-9]
18 * @param length Generate a string of this length. 18 * @param length Generate a string of this length.
19 * @return the random string 19 * @return the random string
20 */ 20 */
21 static QString randomString(int length); 21 static QString randomString(int length);
22 static int execDialog( QDialog* ); 22 static int execDialog( QDialog* );
23 static void showLicence(); 23 static void showLicence();
24 static void testCoords( int* x, int* y, int* wid, int * hei ); 24 static void testCoords( int* x, int* y, int* wid, int * hei );
25 static void showFile(QString caption, QString file); 25 static void showFile(QString caption, QString file);
26 static void showText(QString caption, QString text); 26 static void showText(QString caption, QString text);
27 static bool convert2latin1(QString file); 27 static bool convert2latin1(QString file);
28 static int createBackup( QString fn, QString dp, int numBup );
28}; 29};
29 30
30 31
31#endif 32#endif