From kde-commits Tue Jan 29 09:32:17 2008 From: Andras Mantia Date: Tue, 29 Jan 2008 09:32:17 +0000 To: kde-commits Subject: branches/KDE/3.5/kdewebdev/kommander/editor Message-Id: <1201599137.637365.26432.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=120159914722361 SVN commit 768069 by amantia: Save the forms every 5 minutes and on run in a backup file. M +2 -0 formfile.cpp M +33 -0 mainwindow.cpp M +4 -3 mainwindow.h M +14 -0 mainwindowactions.cpp --- branches/KDE/3.5/kdewebdev/kommander/editor/formfile.cpp #768068:768069 @@ -195,6 +195,8 @@ emit removedFormFile(this); setModified(false); + QFile f(filename + ".backup"); + f.remove(); return true; } --- branches/KDE/3.5/kdewebdev/kommander/editor/mainwindow.cpp #768068:768069 @@ -14,6 +14,7 @@ Modified for Kommander: (C) 2002-2003 Marc Britton (C) 2004 Michal Rudolf + (C) 2008 Andras Mantia **********************************************************************/ @@ -194,6 +195,9 @@ statusBar()->setSizeGripEnabled(true); SpecialInformation::registerSpecials(); + backupTimer = new QTimer(this); + connect(backupTimer, SIGNAL(timeout()), this, SLOT(slotCreateBackups())); + backupTimer->start(1000*60*5); //fire it every five minutes //createGUI(0); } @@ -367,6 +371,31 @@ return QString::fromLatin1(actionCurrentTool->name()).toInt(); } +void MainWindow::slotCreateBackups() +{ +//create a backup of the opened forms + QWidgetList windows = qworkspace->windowList(QWorkspace::StackingOrder); + for (int i = 0; i < (int)windows.count(); ++i) + { + FormWindow* form = dynamic_cast(windows.at(i)); + if (!form || !form->formFile()) + continue; + QString fileName = form->formFile()->fileName(); + QString backupName = fileName + ".backup"; + bool modified = form->formFile()->isModified(); + if (form->formFile()->hasTempFileName()) + continue; //no need to create a backup + + form->formFile()->setFileName(backupName); + form->formFile()->setModified(true); + if (!form->formFile()->save(false)) + { + KMessageBox::error(this, i18n("Cannot create backup file %1.").arg(backupName)); + } + form->formFile()->setFileName(fileName); + form->formFile()->setModified(modified); + } +} void MainWindow::runForm() { @@ -411,6 +440,10 @@ form->formFile()->setModified(true); if (form->formFile()->save(false)) { + if (!KIO::NetAccess::file_copy(KURL::fromPathOrURL(m_fileName), KURL::fromPathOrURL(m_fileName + ".backup"), statbuf.st_mode, true)) + { + KMessageBox::error(this, i18n("Cannot create backup file %1.").arg(m_fileName + ".backup")); + } ::chmod(m_fileName.local8Bit(), S_IRWXU); KProcess* process = new KProcess; process->setUseShell(true); --- branches/KDE/3.5/kdewebdev/kommander/editor/mainwindow.h #768068:768069 @@ -179,6 +179,7 @@ void editBreakLayout(); void editAccels(); void editConnections(); + void editFindGlobal(); void editFormSettings(); void editPreferences(); @@ -206,6 +207,7 @@ void createNewTemplate(); void closeRunningForm(KProcess* process); + void slotCreateBackups(); private: void setupMDI(); @@ -244,8 +246,6 @@ QString whatsThisFrom( const QString &key ); -private slots: - private: PropertyEditor *propertyEditor; HierarchyView *hierarchyView; @@ -267,7 +267,7 @@ *actionEditHLayout, *actionEditVLayout, *actionEditGridLayout, *actionEditSplitHorizontal, *actionEditSplitVertical, *actionEditSelectAll, *actionEditBreakLayout, *actionEditConnections, - *actionEditLower, *actionEditRaise; + *actionEditLower, *actionEditRaise, *actionEditFindGlobal; KToggleAction* actionPointerTool, *actionConnectTool, *actionOrderTool; KAction* actionCurrentTool; @@ -289,6 +289,7 @@ bool databaseAutoEdit; QTimer *updateSlotsTimer; + QTimer *backupTimer; bool inDebugMode; QObjectList debuggingForms; QString lastOpenFilter; --- branches/KDE/3.5/kdewebdev/kommander/editor/mainwindowactions.cpp #768068:768069 @@ -140,6 +140,11 @@ actionEditLower->setWhatsThis(i18n("Lowers the selected widgets")); actionEditLower->setEnabled(false); + actionEditFindGlobal = new KAction(i18n("Find in Form..."), CTRL + ALT + Key_F, this, SLOT(editFindGlobal()), actionCollection(), "edit_find_global"); + actionEditFindGlobal->setToolTip(i18n("Search for a text in the whole form.")); + actionEditFindGlobal->setWhatsThis(whatsThisFrom("Edit|Find in Form")); + connect(this, SIGNAL(hasActiveForm(bool)), actionEditFindGlobal, SLOT(setEnabled(bool))); + actionEditAccels = new KAction(i18n("Check Accelerators"), ALT + Key_R, this, SLOT(editAccels()), actionCollection(), "edit_check_accel"); actionEditAccels->setToolTip(i18n("Checks if the accelerators used in the form are unique")); @@ -182,6 +187,7 @@ actionEditSelectAll->plug(menu); actionEditAccels->plug(menu); menu->insertSeparator(); +// actionEditFindGlobal->plug(menu); //enable when implemented actionEditConnections->plug(menu); actionEditFormSettings->plug(menu); menu->insertSeparator(); @@ -1060,6 +1066,14 @@ statusBar()->clear(); } +void MainWindow::editFindGlobal() +{ + if (!formWindow()) + return; + +} + + void MainWindow::editFormSettings() { if (!formWindow())