kitchensync Library API Documentation

backup.cpp

00001 /*
00002     This file is part of KitchenSync.
00003 
00004     Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public License
00017     along with this library; see the file COPYING.LIB.  If not, write to
00018     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00019     Boston, MA 02111-1307, USA.
00020 */
00021 
00022 #include "backup.h"
00023 
00024 #include "konnectorview.h"
00025 #include "backupview.h"
00026 
00027 #include <konnector.h>
00028 #include <configwidget.h>
00029 #include <konnectormanager.h>
00030 #include <konnectorinfo.h>
00031 #include <mainwindow.h>
00032 #include <calendarsyncee.h>
00033 #include <engine.h>
00034 
00035 #include <kaboutdata.h>
00036 #include <kiconloader.h>
00037 #include <kparts/genericfactory.h>
00038 #include <kmessagebox.h>
00039 #include <kdialog.h>
00040 #include <kdialogbase.h>
00041 #include <kstandarddirs.h>
00042 #include <kprocess.h>
00043 
00044 #include <qlabel.h>
00045 #include <qlistview.h>
00046 #include <qcombobox.h>
00047 #include <qpushbutton.h>
00048 #include <qtextview.h>
00049 #include <qlayout.h>
00050 #include <qdatetime.h>
00051 #include <qcheckbox.h>
00052 #include <qvbox.h>
00053 #include <qdir.h>
00054 
00055 using namespace KCal;
00056 using namespace KSync;
00057 
00058 typedef KParts::GenericFactory< Backup> BackupFactory;
00059 K_EXPORT_COMPONENT_FACTORY( libksync_backup, BackupFactory )
00060 
00061 Backup::Backup( QWidget *parent, const char *name,
00062                     QObject *, const char *,const QStringList & )
00063   : ActionPart( parent, name ), m_widget( 0 ), mActive( false )
00064 {
00065   m_pixmap = KGlobal::iconLoader()->loadIcon("kcmdrkonqi", KIcon::Desktop, 48 );
00066 }
00067 
00068 KAboutData *Backup::createAboutData()
00069 {
00070   return new KAboutData("KSyncBackup", I18N_NOOP("Sync Backup Part"), "0.0" );
00071 }
00072 
00073 Backup::~Backup()
00074 {
00075   delete m_widget;
00076 }
00077 
00078 QString Backup::type() const
00079 {
00080   return QString::fromLatin1("backup");
00081 }
00082 
00083 QString Backup::title() const
00084 {
00085   return i18n("Konnector Backup");
00086 }
00087 
00088 QString Backup::description() const
00089 {
00090   return i18n("Backup for Konnectors");
00091 }
00092 
00093 QPixmap *Backup::pixmap()
00094 {
00095   return &m_pixmap;
00096 }
00097 
00098 QString Backup::iconName() const
00099 {
00100   return QString::fromLatin1("kcmsystem");
00101 }
00102 
00103 bool Backup::hasGui() const
00104 {
00105   return true;
00106 }
00107 
00108 QWidget *Backup::widget()
00109 {
00110   if( !m_widget ) {
00111     m_widget = new QWidget;
00112     QBoxLayout *topLayout = new QVBoxLayout( m_widget );
00113     topLayout->setSpacing( KDialog::spacingHint() );
00114     
00115     QBoxLayout *konnectorLayout = new QHBoxLayout( topLayout );
00116 
00117     mKonnectorList = new KonnectorView( m_widget );
00118     konnectorLayout->addWidget( mKonnectorList, 1 );
00119 
00120     mKonnectorList->updateKonnectorList();
00121 
00122     mBackupView = new BackupView( m_widget );
00123     konnectorLayout->addWidget( mBackupView );
00124     connect( mBackupView, SIGNAL( backupDeleted( const QString & ) ),
00125              SLOT( slotBackupDeleted( const QString & ) ) );
00126     
00127     mBackupView->updateBackupList();
00128 
00129     mLogView = new QTextView( m_widget );
00130     mLogView->setTextFormat( LogText );
00131     topLayout->addWidget( mLogView );
00132 
00133     logMessage( i18n("Ready.") );
00134   }
00135   return m_widget;
00136 }
00137 
00138 void Backup::logMessage( const QString &message )
00139 {
00140   QString text = "<b>" + QTime::currentTime().toString() + "</b>: ";
00141   text += message;
00142 
00143   kdDebug() << "LOG: " << text << endl;
00144 
00145   mLogView->append( text );
00146 }
00147 
00148 void Backup::executeAction()
00149 {
00150   logMessage( i18n("Starting backup") );
00151 
00152   mBackupView->createBackupDir();
00153 
00154   Konnector::List konnectors = core()->engine()->konnectors();
00155   Konnector *k;
00156   for( k = konnectors.first(); k; k = konnectors.next() ) {
00157     backupKonnector( k );
00158   }
00159 
00160   logMessage( i18n("Backup finished.") );
00161 
00162   mBackupView->updateBackupList();
00163 }
00164 
00165 void Backup::backupKonnector( Konnector *k )
00166 {
00167   logMessage( i18n("Syncees read from '%1'").arg( k->resourceName() ) );
00168 
00169   SynceeList syncees = k->syncees();
00170 
00171   if ( syncees.count() == 0 ) {
00172     logMessage( i18n("Syncee list is empty.") );
00173   } else {
00174     logMessage( i18n("Performing backup.") );
00175   
00176     SynceeList::ConstIterator it;
00177     for( it = syncees.begin(); it != syncees.end(); ++it ) {
00178       if ( !(*it)->isValid() ) continue;
00179       QString filename = mBackupView->backupFile( k, *it );
00180       kdDebug() << "FILENAME: " << filename << endl;
00181       QString type = (*it)->type();
00182       if ( (*it)->writeBackup( filename ) ) {
00183         logMessage( i18n("Wrote backup for %1.").arg( type ) );
00184       } else {
00185         logMessage( i18n("<b>Error:</b> Can't write backup for %1.")
00186                     .arg( type ) );
00187       }
00188     }
00189   }
00190 }
00191 
00192 void Backup::slotBackupDeleted( const QString &name )
00193 {
00194   logMessage( i18n("Backup '%1' deleted").arg( name ) );
00195 }
00196 
00197 #include "backup.moc"
KDE Logo
This file is part of the documentation for kitchensync Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Oct 4 14:41:08 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003