You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
284 lines
9.0 KiB
284 lines
9.0 KiB
/* This file is part of the Keep project
|
|
Copyright (C) 2005 Jean-Rémy Falleri <jr.falleri@laposte.net>
|
|
|
|
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 <tqcolor.h>
|
|
#include <tqlayout.h>
|
|
#include <tqvariant.h>
|
|
#include <dcopclient.h>
|
|
#include <tdeactioncollection.h>
|
|
#include <kstdaction.h>
|
|
#include <kdebug.h>
|
|
#include <tdelocale.h>
|
|
#include <kactivelabel.h>
|
|
#include <kapp.h>
|
|
#include <kled.h>
|
|
#include <kpushbutton.h>
|
|
#include <tdemessagebox.h>
|
|
#include <kiconloader.h>
|
|
#include <tdeconfigdialog.h>
|
|
|
|
#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("<p align=\"right\"><b>Ok</b></p>"));
|
|
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("<p align=\"right\"><b>Not Running</b></p>"));
|
|
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("<b>The application rdiff-backup has been detected on your system.</b><br><br> You're running version %1 of rdiff-backup.").arg(manager.RDBVersion()));
|
|
else
|
|
KMessageBox::error(this,i18n("<b>The application rdiff-backup has not been detected on your system.</b><br><br>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"
|