00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#include "restore.h"
00023
00024
#include "backupview.h"
00025
00026
#include <konnector.h>
00027
#include <core.h>
00028
#include <engine.h>
00029
00030
#include <kaboutdata.h>
00031
#include <kiconloader.h>
00032
#include <kparts/genericfactory.h>
00033
#include <kmessagebox.h>
00034
#include <kdialog.h>
00035
#include <kdialogbase.h>
00036
00037
#include <qlabel.h>
00038
#include <qlistview.h>
00039
#include <qcombobox.h>
00040
#include <qpushbutton.h>
00041
#include <qtextview.h>
00042
#include <qlayout.h>
00043
00044
using namespace KCal;
00045
using namespace KSync;
00046
00047
typedef KParts::GenericFactory<Restore> RestoreFactory;
00048 K_EXPORT_COMPONENT_FACTORY( libksync_restore, RestoreFactory )
00049
00050 Restore::Restore(
QWidget *parent, const
char *name,
00051
QObject *, const
char *,const
QStringList & )
00052 :
ActionPart( parent, name ), m_widget( 0 )
00053 {
00054 m_pixmap = KGlobal::iconLoader()->loadIcon(
"kcmdrkonqi", KIcon::Desktop, 48 );
00055 }
00056
00057 KAboutData *Restore::createAboutData()
00058 {
00059
return new KAboutData(
"KSyncRestore", I18N_NOOP(
"Sync Restore Part"),
"0.0" );
00060 }
00061
00062 Restore::~Restore()
00063 {
00064
delete m_widget;
00065 }
00066
00067
QString Restore::type()
const
00068
{
00069
return QString::fromLatin1(
"Restore");
00070 }
00071
00072
QString Restore::title()
const
00073
{
00074
return i18n(
"Konnector Restore");
00075 }
00076
00077
QString Restore::description()
const
00078
{
00079
return i18n(
"Restore for Konnectors");
00080 }
00081
00082
QPixmap *Restore::pixmap()
00083 {
00084
return &m_pixmap;
00085 }
00086
00087
QString Restore::iconName()
const
00088
{
00089
return QString::fromLatin1(
"kcmsystem");
00090 }
00091
00092
bool Restore::hasGui()
const
00093
{
00094
return true;
00095 }
00096
00097
QWidget *Restore::widget()
00098 {
00099
if( !m_widget ) {
00100 m_widget =
new QWidget;
00101
QBoxLayout *topLayout =
new QVBoxLayout( m_widget );
00102 topLayout->
setSpacing( KDialog::spacingHint() );
00103
00104
QBoxLayout *konnectorLayout =
new QHBoxLayout( topLayout );
00105
00106
QBoxLayout *restoreLayout =
new QVBoxLayout( konnectorLayout );
00107
00108 mBackupView =
new BackupView( m_widget );
00109 restoreLayout->
addWidget( mBackupView );
00110
00111 mBackupView->updateBackupList();
00112
00113 mLogView =
new QTextView( m_widget );
00114 mLogView->setTextFormat( LogText );
00115 topLayout->
addWidget( mLogView );
00116
00117 logMessage( i18n(
"Ready.") );
00118 }
00119
return m_widget;
00120 }
00121
00122
void Restore::logMessage(
const QString &message )
00123 {
00124
QString text =
"<b>" + QTime::currentTime().toString() +
"</b>: ";
00125 text += message;
00126
00127 kdDebug() <<
"LOG: " << text << endl;
00128
00129 mLogView->append( text );
00130 }
00131
00132
void Restore::executeAction()
00133 {
00134 logMessage( i18n(
"Starting Restore") );
00135
00136
QString backup = mBackupView->selectedBackup();
00137
00138
if ( backup.isNull() ) {
00139 KMessageBox::sorry( m_widget, i18n(
"No backup selected.") );
00140
return;
00141 }
00142
00143
if ( backup.isEmpty() ) {
00144 KMessageBox::sorry( m_widget, i18n(
"Selected backup is invalid.") );
00145
return;
00146 }
00147
00148 logMessage( i18n(
"Restoring backup %1").arg( backup ) );
00149
00150 mBackupView->setBackupDir( backup );
00151
00152 Konnector::List konnectors = core()->engine()->konnectors();
00153
Konnector *k;
00154
for( k = konnectors.first(); k; k = konnectors.next() ) {
00155 restoreKonnector( k );
00156 }
00157
00158 logMessage( i18n(
"Restore finished.") );
00159
00160 mBackupView->updateBackupList();
00161 }
00162
00163
void Restore::restoreKonnector(
Konnector *k )
00164 {
00165 logMessage( i18n(
"Restoring %1.").arg( k->resourceName() ) );
00166
00167
SynceeList syncees = k->
syncees();
00168
00169 SynceeList::ConstIterator it;
00170
for( it = syncees.begin(); it != syncees.end(); ++it ) {
00171
if ( !(*it)->isValid() )
continue;
00172
00173
QString filename = mBackupView->backupFile( k, *it );
00174 kdDebug() <<
"FILENAME: " << filename << endl;
00175
QString type = (*it)->type();
00176
if ( (*it)->restoreBackup( filename ) ) {
00177 logMessage( i18n(
"Restored backup for %1.").arg( type ) );
00178 }
else {
00179 logMessage( i18n(
"<b>Error:</b> Can't restore backup for %1.")
00180 .arg( type ) );
00181 }
00182 }
00183 }
00184
00185
#include "restore.moc"