aboutsummaryrefslogtreecommitdiffstats
path: root/kde2/kpsion/kpsion.cpp
diff options
context:
space:
mode:
authorFritz Elfert <felfert@to.com>2001-03-27 01:17:19 +0000
committerFritz Elfert <felfert@to.com>2001-03-27 01:17:19 +0000
commitfb6e57695452dc5265a35532f74e918490880723 (patch)
tree1f3f2738ed4466b3505eb0cecfcf9e3ec2a0757f /kde2/kpsion/kpsion.cpp
parentc1c226e16aa579be9e64cba3c4bdca201923096c (diff)
downloadplptools-fb6e57695452dc5265a35532f74e918490880723.tar.gz
plptools-fb6e57695452dc5265a35532f74e918490880723.tar.bz2
plptools-fb6e57695452dc5265a35532f74e918490880723.zip
plpprops: Changes for recent fixes in KDE-Libs
KPsion: Autobackup now handled correctly
Diffstat (limited to 'kde2/kpsion/kpsion.cpp')
-rw-r--r--kde2/kpsion/kpsion.cpp150
1 files changed, 97 insertions, 53 deletions
diff --git a/kde2/kpsion/kpsion.cpp b/kde2/kpsion/kpsion.cpp
index 9189548..5f9b45e 100644
--- a/kde2/kpsion/kpsion.cpp
+++ b/kde2/kpsion/kpsion.cpp
@@ -76,6 +76,8 @@ KPsionMainWindow::KPsionMainWindow()
backupRunning = false;
restoreRunning = false;
formatRunning = false;
+ doScheduledBackup = false;
+ quitImmediately = true;
view = new KIconView(this, "iconview");
view->setSelectionMode(KIconView::Multi);
@@ -270,6 +272,11 @@ insertDrive(char letter, const char * const name) {
it->setRenameEnabled(false);
}
+bool KPsionMainWindow::
+shouldQuit() {
+ return quitImmediately;
+}
+
void KPsionMainWindow::
queryPsion() {
u_int32_t devbits;
@@ -333,6 +340,7 @@ queryPsion() {
delete rfsvSocket;
if (rfsvSocket)
delete rpcsSocket;
+ quitImmediately = true;
return;
}
NewPsionWizard *wiz = new NewPsionWizard(this, "newpsionwiz");
@@ -341,74 +349,80 @@ queryPsion() {
statusBar()->changeItem(i18n("Connected to %1").arg(machineName),
STID_CONNECTION);
- if (args->isSet("autobackup") || args->isSet("backup") ||
- args->isSet("restore") || args->isSet("format")) {
- view->setEnabled(false);
- actionCollection()->action("restore")->setEnabled(false);
- actionCollection()->action("format")->setEnabled(false);
- actionCollection()->action("fullbackup")->setEnabled(false);
- actionCollection()->action("incbackup")->setEnabled(false);
- QTimer::singleShot(1000, this, SLOT(slotAutoAction()));
- }
-}
-
-void KPsionMainWindow::
-slotAutoAction() {
- QString uid = getMachineUID();
- KConfig *config = kapp->config();
- KPsionConfig pcfg;
-
if (args->isSet("autobackup")) {
- bool any = false;
+ // Check, if scheduled backups to perform
+
+ doScheduledBackup = false;
+ KPsionConfig pcfg;
+ QIconViewItem *i;
QStringList::Iterator it;
QDateTime d;
+ KConfig *config = kapp->config();
+ QString uid = getMachineUID();
+ QString key;
int fi = pcfg.getIntervalDays(config, KPsionConfig::OPT_FULLINTERVAL);
int ii = pcfg.getIntervalDays(config, KPsionConfig::OPT_INCINTERVAL);
- KPsionBackupListView *bl = new KPsionBackupListView(0, "backups");
- bl->readBackups(uid);
-
- // Full Backups
+ // Check for Full Backup
+ config->setGroup(pcfg.getSectionName(KPsionConfig::OPT_LASTFULL));
for (it = backupDrives.begin(); it != backupDrives.end(); ++it) {
- d = bl->getLastBackup(KPsionBackupListView::FULL, *it);
+ key =
+ pcfg.getOptionName(KPsionConfig::OPT_LASTFULL).arg(uid).arg(*it);
+ d.setTime_t(config->readNumEntry(key));
+
if (fi && d.daysTo(QDateTime::currentDateTime()) >= fi) {
fullBackup = true;
- for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
+ for (i = view->firstItem(); i; i = i->nextItem()) {
if (i->key() == *it) {
i->setSelected(true);
- any = true;
+ doScheduledBackup = true;
}
}
}
}
- if (any) {
- delete bl;
- doBackup();
- // If just made a backup, re-read backups
- bl = new KPsionBackupListView(0, "backups");
- bl->readBackups(uid);
- }
-
- // Incremental Backups
- any = false;
- fullBackup = false;
- view->clearSelection();
- for (it = backupDrives.begin(); it != backupDrives.end(); ++it) {
- d = bl->getLastBackup(KPsionBackupListView::INCREMENTAL, *it);
- if (ii && d.daysTo(QDateTime::currentDateTime()) >= ii) {
- for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
- if (i->key() == *it) {
- i->setSelected(true);
- any = true;
+ if (!doScheduledBackup) {
+ // Check for Incremental Backup
+ fullBackup = false;
+ view->clearSelection();
+ config->setGroup(pcfg.getSectionName(KPsionConfig::OPT_LASTINC));
+ for (it = backupDrives.begin(); it != backupDrives.end(); ++it) {
+ key =
+ pcfg.getOptionName(KPsionConfig::OPT_LASTINC).arg(uid).arg(*it);
+ d.setTime_t(config->readNumEntry(key));
+ if (ii && d.daysTo(QDateTime::currentDateTime()) >= ii) {
+ for (i = view->firstItem(); i; i = i->nextItem()) {
+ if (i->key() == *it) {
+ i->setSelected(true);
+ doScheduledBackup = true;
+ }
}
}
}
}
- delete bl;
+ if (!doScheduledBackup) {
+ quitImmediately = true;
+ return;
+ }
+
+ }
+ if (doScheduledBackup || args->isSet("backup") ||
+ args->isSet("restore") || args->isSet("format")) {
+ view->setEnabled(false);
+ actionCollection()->action("restore")->setEnabled(false);
+ actionCollection()->action("format")->setEnabled(false);
+ actionCollection()->action("fullbackup")->setEnabled(false);
+ actionCollection()->action("incbackup")->setEnabled(false);
+ QTimer::singleShot(1000, this, SLOT(slotAutoAction()));
+ }
+}
- if (any)
- doBackup();
+void KPsionMainWindow::
+slotAutoAction() {
+ QIconViewItem *i;
+ if (doScheduledBackup) {
+ doBackup();
+ QTimer::singleShot(1000, this, SLOT(close()));
return;
}
@@ -421,7 +435,7 @@ slotAutoAction() {
for (it = argl.begin(); it != argl.end(); ++it) {
QString drv((*it).upper());
- for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
+ for (i = view->firstItem(); i; i = i->nextItem()) {
if (i->key() == drv) {
i->setSelected(true);
any = true;
@@ -432,6 +446,7 @@ slotAutoAction() {
fullBackup = true;
doBackup();
}
+ QTimer::singleShot(1000, this, SLOT(close()));
return;
}
@@ -449,7 +464,7 @@ slotAutoAction() {
"a <B>ROM</B> drive and therefore cannot be restored.</QT>"));
continue;
}
- for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
+ for (i = view->firstItem(); i; i = i->nextItem()) {
if (i->key() == drv) {
i->setSelected(true);
any = true;
@@ -458,6 +473,7 @@ slotAutoAction() {
}
if (any)
slotStartRestore();
+ QTimer::singleShot(1000, this, SLOT(close()));
return;
}
@@ -468,7 +484,7 @@ slotAutoAction() {
for (it = argl.begin(); it != argl.end(); ++it) {
QString drv((*it).upper());
- for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
+ for (i = view->firstItem(); i; i = i->nextItem()) {
if (i->key() == drv) {
i->setSelected(true);
any = true;
@@ -477,8 +493,10 @@ slotAutoAction() {
}
if (any)
slotStartFormat();
+ QTimer::singleShot(1000, this, SLOT(close()));
return;
}
+ QTimer::singleShot(1000, this, SLOT(close()));
}
QString KPsionMainWindow::
@@ -665,6 +683,22 @@ findTarEntry(const KTarEntry *te, QString path, QString rpath) {
}
void KPsionMainWindow::
+updateBackupStamps() {
+ KConfig *config = kapp->config();
+ KPsionConfig pcfg;
+ QString uid = getMachineUID();
+ int cfgBtype = (fullBackup)
+ ? KPsionConfig::OPT_LASTFULL : KPsionConfig::OPT_LASTINC;
+
+ config->setGroup(pcfg.getSectionName(cfgBtype));
+ for (QIconViewItem *i = view->firstItem(); i; i = i->nextItem()) {
+ QString key = pcfg.getOptionName(cfgBtype).arg(uid).arg(i->key());
+ if (i->isSelected())
+ config->writeEntry(key, time(0));
+ }
+}
+
+void KPsionMainWindow::
doBackup() {
backupRunning = true;
switchActions();
@@ -707,7 +741,9 @@ doBackup() {
emit setProgress(0);
statusBar()->changeItem(i18n("Connected to %1").arg(machineName),
STID_CONNECTION);
- KMessageBox::information(this, i18n("No files need backup"));
+ updateBackupStamps();
+ if (!args->isSet("autobackup"))
+ KMessageBox::information(this, i18n("No files need backup"));
backupRunning = false;
switchActions();
return;
@@ -740,7 +776,7 @@ doBackup() {
archiveName += (fullBackup) ? "/F-" : "/I-";
time_t now = time(0);
char tstr[30];
- strftime(tstr, sizeof(tstr), "%Y-%m-%d-%H-%M-%S.tar.gz",
+ strftime(tstr, sizeof(tstr), "%Y-%m-%d-%H-%M-%S.tmp.gz",
localtime(&now));
archiveName += tstr;
backupTgz = new KTarGz(archiveName);
@@ -827,6 +863,7 @@ doBackup() {
}
updateProgress(e.getSize());
}
+ updateBackupStamps();
}
// Restart previously running applications on the Psion
// from saved state info.
@@ -835,7 +872,14 @@ doBackup() {
backupTgz->close();
delete backupTgz;
if (badBackup)
- unlink(archiveName.data());
+ ::unlink(archiveName.latin1());
+ else {
+ // Rename Tarfile to its final name;
+ ::rename(archiveName.latin1(),
+ archiveName.replace(QRegExp("\\.tmp\\.gz$"), ".tar.gz"));
+
+ }
+
backupRunning = false;
switchActions();
statusBar()->changeItem(i18n("Connected to %1").arg(machineName),