aboutsummaryrefslogtreecommitdiffstats
path: root/kde2
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
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')
-rw-r--r--kde2/kioslave/kio_plp.cpp29
-rw-r--r--kde2/kioslave/kio_plp.h5
-rw-r--r--kde2/kpsion/kpsion.cpp150
-rw-r--r--kde2/kpsion/kpsion.h5
-rw-r--r--kde2/kpsion/kpsionbackuplistview.cpp25
-rw-r--r--kde2/kpsion/kpsionbackuplistview.h1
-rw-r--r--kde2/kpsion/kpsionconfig.cpp2
-rw-r--r--kde2/kpsion/kpsionconfig.h2
-rw-r--r--kde2/kpsion/main.cpp3
-rw-r--r--kde2/plugins/plpprops.desktop2
10 files changed, 131 insertions, 93 deletions
diff --git a/kde2/kioslave/kio_plp.cpp b/kde2/kioslave/kio_plp.cpp
index bfa6d70..2374dc3 100644
--- a/kde2/kioslave/kio_plp.cpp
+++ b/kde2/kioslave/kio_plp.cpp
@@ -322,6 +322,23 @@ uid2mime(PlpDirent &e) {
}
void PLPProtocol::
+appendUIDmime(PlpDirent &e, UDSEntry &entry) {
+ QString tmp;
+
+ if ((e.getAttr() & rfsv::PSI_A_DIR) == 0) {
+ PlpUID u = e.getUID();
+ UidMap::Iterator it = puids.find(u);
+ if (it != puids.end()) {
+ UDSAtom atom;
+
+ atom.m_uds = KIO::UDS_MIME_TYPE;
+ atom.m_str = it.data();
+ entry.append(atom);
+ }
+ }
+}
+
+void PLPProtocol::
listDir(const KURL& _url) {
KURL url(_url);
QString path(QFile::encodeName(url.path(-1)));
@@ -371,18 +388,13 @@ listDir(const KURL& _url) {
UDSAtom atom;
PlpDirent e = files[i];
- long attr = e.getAttr();
entry.clear();
atom.m_uds = KIO::UDS_NAME;
atom.m_str = e.getName();
entry.append(atom);
- if ((attr & rfsv::PSI_A_DIR) == 0) {
- atom.m_uds = KIO::UDS_MIME_TYPE;
- atom.m_str = uid2mime(e);
- entry.append(atom);
- }
+ appendUIDmime(e, entry);
completeUDSEntry(entry, e, rom);
listEntry(entry, false);
@@ -431,18 +443,15 @@ createVirtualDirEntry(UDSEntry & entry, bool rdonly, int type) {
atom.m_long = S_IFDIR;
entry.append(atom);
atom.m_uds = KIO::UDS_GUESSED_MIME_TYPE;
- atom.m_uds = KIO::UDS_MIME_TYPE;
atom.m_str = QString("inode/x-psion-drive");
entry.append(atom);
break;
case PLP_FTYPE_DRIVE:
atom.m_uds = KIO::UDS_FILE_TYPE;
- atom.m_long = S_IFDIR;
+ atom.m_long = S_IFREG;
entry.append(atom);
atom.m_uds = KIO::UDS_GUESSED_MIME_TYPE;
atom.m_str = QString("inode/x-psion-drive");
- atom.m_uds = KIO::UDS_MIME_TYPE;
- atom.m_str = QString("inode/x-psion-drive");
entry.append(atom);
break;
case PLP_FTYPE_OWNER:
diff --git a/kde2/kioslave/kio_plp.h b/kde2/kioslave/kio_plp.h
index 9119e6d..c5c0701 100644
--- a/kde2/kioslave/kio_plp.h
+++ b/kde2/kioslave/kio_plp.h
@@ -38,7 +38,7 @@ class PLPProtocol : public KIO::SlaveBase {
public:
PLPProtocol (const QCString &pool, const QCString &app);
virtual ~PLPProtocol();
-
+
virtual void openConnection();
virtual void closeConnection();
@@ -74,6 +74,7 @@ private:
QString uid2mime(PlpDirent &e);
int checkSpecial(const QString& path);
void setOwner(KIO::UDSEntry & entry);
+ void appendUIDmime(PlpDirent &e, KIO::UDSEntry &entry);
rfsv *plpRfsv;
rpcs *plpRpcs;
@@ -81,7 +82,7 @@ private:
ppsocket *plpRpcsSocket;
QStringList drives;
QMap<QString,char> drivechars;
- UidMap puids;
+ UidMap puids;
QString currentHost;
int currentPort;
time_t t_last;
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),
diff --git a/kde2/kpsion/kpsion.h b/kde2/kpsion/kpsion.h
index 748450e..1ec7715 100644
--- a/kde2/kpsion/kpsion.h
+++ b/kde2/kpsion/kpsion.h
@@ -54,7 +54,7 @@ public:
bool isConnected() { return connected; }
const KTarEntry *findTarEntry(const KTarEntry *te, QString path,
QString rpath = "");
-
+ bool shouldQuit();
static QString unix2psion(const char * const);
static QString psion2unix(const char * const);
@@ -100,6 +100,7 @@ private:
bool askOverwrite(PlpDirent e);
void setDriveName(const char dchar, QString dname);
void doFormat(QString drive);
+ void updateBackupStamps();
rfsv *plpRfsv;
rpcs *plpRpcs;
@@ -130,7 +131,9 @@ private:
bool firstTry;
bool shuttingDown;
bool fullBackup;
+ bool doScheduledBackup;
bool overWriteAll;
+ bool quitImmediately;
int reconnectTime;
int nextTry;
int ncpdSpeed;
diff --git a/kde2/kpsion/kpsionbackuplistview.cpp b/kde2/kpsion/kpsionbackuplistview.cpp
index ed4808a..c51c62d 100644
--- a/kde2/kpsion/kpsionbackuplistview.cpp
+++ b/kde2/kpsion/kpsionbackuplistview.cpp
@@ -391,31 +391,6 @@ getFormatDrives() {
return l;
}
-QDateTime KPsionBackupListView::
-getLastBackup(int backupType, QString drive) {
- time_t stamp = 0;
-
- drive += ":";
- // Find latest backup for given drive
- KPsionCheckListItem *i = firstChild();
- while (i != 0L) {
- if ((backupType >= i->backupType()) && (i->when() > stamp)) {
- KPsionCheckListItem *c = i->firstChild();
- while (c != 0L) {
- if (c->text() == drive) {
- stamp = i->when();
- break;
- }
- c = c->nextSibling();
- }
- }
- i = i->nextSibling();
- }
- QDateTime d;
- d.setTime_t(stamp);
- return d;
-}
-
bool KPsionBackupListView::
autoSelect(QString drive) {
KPsionCheckListItem *latest = NULL;
diff --git a/kde2/kpsion/kpsionbackuplistview.h b/kde2/kpsion/kpsionbackuplistview.h
index 7119eb6..1a28ad0 100644
--- a/kde2/kpsion/kpsionbackuplistview.h
+++ b/kde2/kpsion/kpsionbackuplistview.h
@@ -103,7 +103,6 @@ public:
QStringList getSelectedTars();
QStringList getFormatDrives();
bool autoSelect(QString drive);
- QDateTime getLastBackup(int backupType, QString drive);
signals:
void itemsEnabled(bool);
diff --git a/kde2/kpsion/kpsionconfig.cpp b/kde2/kpsion/kpsionconfig.cpp
index 976ae69..bd08b6d 100644
--- a/kde2/kpsion/kpsionconfig.cpp
+++ b/kde2/kpsion/kpsionconfig.cpp
@@ -40,6 +40,8 @@ KPsionConfig::KPsionConfig() {
optionNames.insert(OPT_MACHNAME, QString("Psion/Name_%1"));
optionNames.insert(OPT_BACKUPDRIVES, QString("Psion/BackupDrives_%1"));
optionNames.insert(OPT_DRIVES, QString("Psion/Drives_%1"));
+ optionNames.insert(OPT_LASTFULL, QString("Psion/LastFull_%1_%1"));
+ optionNames.insert(OPT_LASTINC, QString("Psion/LastInc_%1_%1"));
defaults.insert(DEF_INCINTERVAL, QString("1"));
defaults.insert(DEF_FULLINTERVAL, QString("7"));
diff --git a/kde2/kpsion/kpsionconfig.h b/kde2/kpsion/kpsionconfig.h
index f0ae075..1b8de31 100644
--- a/kde2/kpsion/kpsionconfig.h
+++ b/kde2/kpsion/kpsionconfig.h
@@ -45,6 +45,8 @@ public:
OPT_MACHNAME = 8,
OPT_BACKUPDRIVES = 9,
OPT_DRIVES = 10,
+ OPT_LASTFULL = 11,
+ OPT_LASTINC = 12,
};
enum cfgDefaults {
diff --git a/kde2/kpsion/main.cpp b/kde2/kpsion/main.cpp
index d8d1c10..6c2aaf9 100644
--- a/kde2/kpsion/main.cpp
+++ b/kde2/kpsion/main.cpp
@@ -109,8 +109,9 @@ int main(int argc, char **argv) {
KPsionMainWindow *w = new KPsionMainWindow();
- if (args->isSet("autobackup") && (!w->isConnected()))
+ if (w->shouldQuit())
return 0;
+
w->resize(300, 170);
a.setMainWidget(w);
w->show();
diff --git a/kde2/plugins/plpprops.desktop b/kde2/plugins/plpprops.desktop
index 9fc8b2f..55cc87c 100644
--- a/kde2/plugins/plpprops.desktop
+++ b/kde2/plugins/plpprops.desktop
@@ -38,3 +38,5 @@ Comment[tr]=Özellikler İletişim Kutusu İçin Eklenti
Comment[uk]=Додаток для діалогу властивостей
Comment[zh_CN.GB2312]=属性对话的插件
Comment[zh_TW.Big5]=外掛內容對話框
+
+X-KDE-Protocol=psion