/* This file is part of the Keep project Copyright (C) 2005 Jean-Rémy Falleri Keep is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Keep is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Keep; if not, write to the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "keepmainwindow.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "backupconfig.h" #include "addbackupwizard.h" #include "restorebackupwizard.h" #include "forcebackupdialog.h" #include "backupconfigdialog.h" #include "generalconfigview.h" #include "rdbmanager.h" #include "keepsettings.h" #include "logdialog.h" KeepMainWindow::KeepMainWindow(TQWidget *parent, const char *name): TDEMainWindow(parent,name) { setCaption(i18n("Backup System")); m_actionView = new ActionView(this); TDEIconLoader *icons = TDEGlobal::iconLoader(); m_actionView->m_btnAddWizard->setPixmap(icons->loadIcon("add_backup",TDEIcon::Toolbar,32)); m_actionView->m_btnRestoreWizard->setPixmap(icons->loadIcon("restore_dir",TDEIcon::Toolbar,32)); m_actionView->m_btnForce->setPixmap(icons->loadIcon("force_backup",TDEIcon::Toolbar,32)); m_actionView->m_btnBackupConfig->setPixmap(icons->loadIcon("configure",TDEIcon::Toolbar,32)); m_actionView->m_btnLog->setPixmap(icons->loadIcon("text-x-log",TDEIcon::Toolbar,32)); slotRefreshGUI(); setCentralWidget(m_actionView); initActions(); initConnections(); resize( minimumSizeHint() ); createGUI(0L); RDBManager manager; if ( !manager.isRDB() ) slotCheckRDB(); } KeepMainWindow::~KeepMainWindow() { } void KeepMainWindow::initActions() { KStdAction::quit(TQT_TQOBJECT(this), TQT_SLOT(close()), actionCollection()); new TDEAction( i18n("Check rdiff-backup"), "application-vnd.tde.info", "", TQT_TQOBJECT(this), TQT_SLOT(slotCheckRDB()), actionCollection(), "check_rdiff-backup" ); new TDEAction( i18n("Configure backups"), "configure", "", TQT_TQOBJECT(this), TQT_SLOT(slotConfigureBackup()), actionCollection(), "configure_backups" ); new TDEAction( i18n("Configure"), "configure", "", TQT_TQOBJECT(this), TQT_SLOT(slotConfigure()), actionCollection(), "configure_keep" ); new TDEAction( i18n("Add Backup"), "add_backup", "", TQT_TQOBJECT(this), TQT_SLOT(slotAddBackupWizard()), actionCollection(), "add_backup" ); new TDEAction( i18n("Restore Backup"), "restore_dir", "", TQT_TQOBJECT(this), TQT_SLOT(slotRestoreBackupWizard()), actionCollection(), "restore_backup" ); new TDEAction( i18n("Backup Now"), "force_backup", "", TQT_TQOBJECT(this), TQT_SLOT(slotForceBackup()), actionCollection(), "force_backup" ); new TDEAction( i18n("View log"), "text-x-log", "", TQT_TQOBJECT(this), TQT_SLOT(slotViewLog()), actionCollection(), "view_log"); } void KeepMainWindow::initConnections() { connect( m_actionView->m_btnAddWizard, TQT_SIGNAL( clicked()), TQT_TQOBJECT(this), TQT_SLOT( slotAddBackupWizard() ) ); connect( m_actionView->m_btnRestoreWizard, TQT_SIGNAL( clicked()), TQT_TQOBJECT(this), TQT_SLOT( slotRestoreBackupWizard() ) ); connect( m_actionView->m_btnForce, TQT_SIGNAL( clicked()), TQT_TQOBJECT(this), TQT_SLOT( slotForceBackup() ) ); connect( m_actionView->m_btnBackupConfig, TQT_SIGNAL( clicked()), TQT_TQOBJECT(this), TQT_SLOT( slotConfigureBackup() ) ); connect( m_actionView->m_btnLog, TQT_SIGNAL( clicked()), TQT_TQOBJECT(this), TQT_SLOT( slotViewLog() ) ); connect( m_actionView->m_btnLoadDaemon, TQT_SIGNAL( clicked()), TQT_TQOBJECT(this), TQT_SLOT( slotLoadDaemon() ) ); connect( m_actionView->m_btnUnloadDaemon, TQT_SIGNAL( clicked()), TQT_TQOBJECT(this), TQT_SLOT( slotUnloadDaemon() ) ); connect( m_actionView->m_btnReloadDaemon, TQT_SIGNAL( clicked()), TQT_TQOBJECT(this), TQT_SLOT( slotReloadDaemon() ) ); } void KeepMainWindow::slotRefreshGUI() { // Sets the Keep Daemon (KDED) State if ( backupSystemRunning() ) { m_actionView->m_lblDaemonState->setText(i18n("

Ok

")); m_actionView->m_btnLoadDaemon->setEnabled(false); m_actionView->m_btnUnloadDaemon->setEnabled(true); m_actionView->m_btnReloadDaemon->setEnabled(true); slotDaemonAlertState(false); } else { m_actionView->m_lblDaemonState->setText(i18n("

Not Running

")); m_actionView->m_btnLoadDaemon->setEnabled(true); m_actionView->m_btnUnloadDaemon->setEnabled(false); m_actionView->m_btnReloadDaemon->setEnabled(false); slotDaemonAlertState(true); } } void KeepMainWindow::slotCheckRDB() { RDBManager manager; if ( manager.isRDB() ) KMessageBox::information(this, i18n("The application rdiff-backup has been detected on your system.

You're running version %1 of rdiff-backup.").arg(manager.RDBVersion())); else KMessageBox::error(this,i18n("The application rdiff-backup has not been detected on your system.

If rdiff-backup is not installed, Keep will not be able to make backups. To fix this problem, install rdiff-backup on your system.")); } void KeepMainWindow::slotForceBackup() { ForceBackupDialog *force = new ForceBackupDialog(this); force->show(); } void KeepMainWindow::slotViewLog() { LogDialog *logDialog = new LogDialog(this); logDialog->show(); } void KeepMainWindow::slotConfigureBackup() { BackupConfigDialog *backupConfig = new BackupConfigDialog(this); backupConfig->show(); } void KeepMainWindow::slotConfigure() { //An instance of your dialog could be already created and could be cached, //in which case you want to display the cached dialog instead of creating //another one if ( TDEConfigDialog::showDialog( "settings" ) ) return; //TDEConfigDialog didn't find an instance of this dialog, so lets create it : TDEConfigDialog* dialog = new TDEConfigDialog( this, "settings", KeepSettings::self() ); GeneralConfigView* generalConfigView = new GeneralConfigView( 0, "generalConfigView" ); dialog->addPage( generalConfigView, i18n("General"), "general" ); dialog->show(); } void KeepMainWindow::slotAddBackupWizard() { AddBackupWizard *addBackupWizard = new AddBackupWizard(this, "addBackupWizard"); connect( addBackupWizard, TQT_SIGNAL( backupSetted(Backup)), TQT_TQOBJECT(this), TQT_SLOT( slotAddBackup(Backup) ) ); addBackupWizard->show(); } void KeepMainWindow::slotAddBackup(Backup backup) { BackupConfig *backupConfig = new BackupConfig(); backupConfig->addBackup(backup); delete backupConfig; } void KeepMainWindow::slotRestoreBackupWizard() { RestoreBackupWizard *restoreBackupWizard = new RestoreBackupWizard(this, "restoreBackupWizard"); restoreBackupWizard->show(); } void KeepMainWindow::slotDaemonAlertState(bool state) { if ( !state ) { m_actionView->m_ledDaemonState->setColor(TQt::green); } else { m_actionView->m_ledDaemonState->setColor(TQt::red); } } bool KeepMainWindow::backupSystemRunning() { QCStringList modules; TQCString replyType; TQByteArray replyData; if ( !kapp->dcopClient()->call( "kded", "kded", "loadedModules()", TQByteArray(), replyType, replyData ) ) return false; else { if ( replyType == "QCStringList" ) { TQDataStream reply( replyData, IO_ReadOnly ); reply >> modules; } } QCStringList::ConstIterator end( modules.end() ); for ( QCStringList::ConstIterator it = modules.begin(); it != end; ++it ) { if ( *it == "keep" ) return true; } return false; } void KeepMainWindow::slotLoadDaemon() { TQCString service = "keep"; TQByteArray data, replyData; TQCString replyType; TQDataStream arg( data, IO_WriteOnly ); arg << service; if ( kapp->dcopClient()->call( "kded", "kded", "loadModule(TQCString)", data, replyType, replyData ) ) { TQDataStream reply( replyData, IO_ReadOnly ); if ( replyType == "bool" ) { bool result; reply >> result; if ( !result ) { return; } } else { KMessageBox::error( this, i18n( "Incorrect reply from KDED." ) ); return; } } else { KMessageBox::error( this, i18n( "Unable to contact KDED." ) ); return; } slotRefreshGUI(); } void KeepMainWindow::slotUnloadDaemon() { TQCString service = "keep"; TQByteArray data; TQDataStream arg( data, IO_WriteOnly ); arg << service; if ( !kapp->dcopClient()->send( "kded", "kded", "unloadModule(TQCString)", data ) ) { KMessageBox::error( this, i18n( "Unable to stop service." ) ); return; } slotRefreshGUI(); } void KeepMainWindow::slotReloadDaemon() { slotUnloadDaemon(); slotLoadDaemon(); } #include "keepmainwindow.moc"