• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

Nepomuk-Core

  • sources
  • kde-4.12
  • kdelibs
  • nepomuk-core
  • services
  • storage
  • backup
  • gui
backupwizardpages.cpp
Go to the documentation of this file.
1 /*
2  This file is part of the Nepomuk KDE project.
3  Copyright (C) 2010 Vishesh Handa <handa.vish@gmail.com>
4  Copyright (C) 2010 Sebastian Trueg <trueg@kde.org>
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Lesser General Public
8  License as published by the Free Software Foundation; either
9  version 2.1 of the License, or (at your option) version 3, or any
10  later version accepted by the membership of KDE e.V. (or its
11  successor approved by the membership of KDE e.V.), which shall
12  act as a proxy defined in Section 6 of version 3 of the license.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Lesser General Public License for more details.
18 
19  You should have received a copy of the GNU Lesser General Public
20  License along with this library. If not, see <http://www.gnu.org/licenses/>.
21 */
22 
23 
24 #include "backupwizardpages.h"
25 #include "backupwizard.h"
26 #include "resourcemanager.h"
27 
28 #include <KDebug>
29 #include <KLineEdit>
30 #include <KStandardDirs>
31 #include <KFileDialog>
32 #include <KUrlRequester>
33 
34 #include <Soprano/Model>
35 #include <Soprano/QueryResultIterator>
36 
37 #include <QtGui/QVBoxLayout>
38 #include <QtGui/QGroupBox>
39 #include <QtGui/QLineEdit>
40 
41 Nepomuk2::IntroPage::IntroPage(QWidget* parent)
42  : QWizardPage( parent )
43 {
44  setupUi( this );
45  setTitle( i18n("Nepomuk Backup") );
46  setSubTitle( i18n("Please choose one of the following options") );
47 }
48 
49 int Nepomuk2::IntroPage::nextId() const
50 {
51  if( m_backup->isChecked() )
52  return BackupWizard::Id_BackupSettingsPage;
53  else if( m_restore->isChecked() )
54  return BackupWizard::Id_RestoreSelectionPage;
55 
56  return -1;
57 }
58 
59 
60 //
61 // Backup Page
62 //
63 Nepomuk2::BackupPage::BackupPage(QWidget* parent)
64  : QWizardPage(parent),
65  m_backupDone(false)
66 {
67  QVBoxLayout* layout = new QVBoxLayout( this );
68  m_progressBar = new QProgressBar( this );
69  m_progressBar->setMinimum( 0 );
70  m_progressBar->setMaximum( 100 );
71 
72  m_status = new QLabel( this );
73 
74  layout->addWidget( m_progressBar );
75  layout->addWidget( m_status );
76 
77  setTitle( i18n("Nepomuk Backup") );
78  setSubTitle( i18n("Performing backup") );
79  setCommitPage(true);
80 
81  m_backupManager = new BackupManager( QLatin1String("org.kde.NepomukStorage"),
82  QLatin1String("/backupmanager"),
83  QDBusConnection::sessionBus(), this);
84  connect( m_backupManager, SIGNAL(backupDone()), this, SLOT(slotBackupDone()) );
85  connect( m_backupManager, SIGNAL(backupPercent(int)), m_progressBar, SLOT(setValue(int)) );
86 }
87 
88 void Nepomuk2::BackupPage::initializePage()
89 {
90  m_backupDone = false;
91  KUrl backupUrl = field(QLatin1String("backupUrl")).value<KUrl>();
92  kDebug() << backupUrl;
93  m_status->setText( i18nc("@info", "Writing Nepomuk database backup to <filename>%1</filename>...",
94  field(QLatin1String("backupUrl")).value<KUrl>().pathOrUrl()));
95  m_backupManager->backupTagsAndRatings( backupUrl.toLocalFile() );
96 }
97 
98 bool Nepomuk2::BackupPage::isComplete() const
99 {
100  return m_backupDone;
101 }
102 
103 int Nepomuk2::BackupPage::nextId() const
104 {
105  return -1;
106 }
107 
108 void Nepomuk2::BackupPage::slotBackupDone()
109 {
110  m_backupDone = true;
111  m_status->setText( i18nc("@info","Backup of the Nepomuk database successfully written to <filename>%1</filename>.",
112  field(QLatin1String("backupUrl")).value<KUrl>().pathOrUrl()) );
113  setSubTitle( i18n("Backup completed successfully") );
114 
115  emit completeChanged();
116 }
117 
118 //
119 // Restore Selection Page
120 //
121 
122 Nepomuk2::RestoreSelectionPage::RestoreSelectionPage(QWidget* parent): QWizardPage(parent)
123 {
124  setupUi( this );
125 }
126 
127 void Nepomuk2::RestoreSelectionPage::initializePage()
128 {
129  QDir dir( KStandardDirs::locateLocal( "data", "nepomuk/backupsync/backups/" ) );
130  QStringList backupFiles = dir.entryList( QDir::Files | QDir::NoDotAndDotDot, QDir::Name );
131 
132  foreach( const QString & backup, backupFiles ) {
133  m_listWidget->addItem( backup );
134  }
135 
136  if( backupFiles.isEmpty() ) {
137  QLabel * errorLabel = new QLabel( i18nc("@info", "No system backups found. Please select a custom backup path.") , this);
138  QGridLayout* layout = new QGridLayout(m_listWidget);
139  layout->addWidget(errorLabel, 1, 1);
140  layout->setRowStretch(0,1);
141  layout->setRowStretch(2,1);
142  layout->setColumnStretch(0,1);
143  layout->setColumnStretch(2,1);
144  }
145 
146  connect( m_customBackupButton, SIGNAL(clicked(bool)), this, SLOT(slotCustomBackupUrl()) );
147  connect( m_listWidget, SIGNAL(itemSelectionChanged()),
148  this, SLOT(slotSelectionChanged()) );
149 
150  registerField( "backupToRestorePath", this, "backupFilePath" );
151 }
152 
153 bool Nepomuk2::RestoreSelectionPage::isComplete() const
154 {
155  return QFile::exists(m_backupFilePath);
156 }
157 
158 int Nepomuk2::RestoreSelectionPage::nextId() const
159 {
160  return BackupWizard::Id_RestorePage;
161 }
162 
163 
164 void Nepomuk2::RestoreSelectionPage::slotSelectionChanged()
165 {
166  if( QListWidgetItem* item = m_listWidget->currentItem() )
167  m_backupFilePath = KStandardDirs::locateLocal("data", QLatin1String("nepomuk/backupsync/backups/") + item->data( Qt::DisplayRole ).toString() );
168  else
169  m_backupFilePath.truncate(0);
170  kDebug() << m_backupFilePath;
171  emit completeChanged();
172 }
173 
174 void Nepomuk2::RestoreSelectionPage::slotCustomBackupUrl()
175 {
176  m_backupFilePath = KFileDialog::getOpenFileName( KUrl(), QString(), this );
177  kDebug() << "NEW BACKUP URL : " << m_backupFilePath;
178  if( isComplete() ) {
179  wizard()->next();
180  }
181 }
182 
183 
184 //
185 // Restore Page
186 //
187 Nepomuk2::RestorePage::RestorePage(QWidget* parent)
188  : QWizardPage(parent)
189 {
190  // GUI
191  QVBoxLayout* layout = new QVBoxLayout( this );
192 
193  m_progressBar = new QProgressBar( this );
194  m_progressBar->setMinimum( 0 );
195  m_progressBar->setMaximum( 100 );
196 
197  m_status = new QLabel( i18n("Restoring Backup"), this );
198  m_restoreDone = false;
199 
200  layout->addWidget( m_progressBar );
201  layout->addWidget( m_status );
202 
203  // Page Properties
204  setTitle( i18n("Restoring Backup") );
205  setSubTitle( i18n("The backup is being restored...") );
206 
207  m_backupManager = new BackupManager( QLatin1String("org.kde.NepomukStorage"),
208  "/backupmanager",
209  QDBusConnection::sessionBus(), this);
210 }
211 
212 
213 void Nepomuk2::RestorePage::initializePage()
214 {
215  QString backupUrl = field("backupToRestorePath").toString();
216 
217  kDebug() << "Restoring " << backupUrl;
218  m_backupManager->restore( backupUrl );
219 
220  connect( m_backupManager, SIGNAL(restoreDone()), this, SLOT(slotRestoreDone()) );
221  connect( m_backupManager, SIGNAL(restorePercent(int)), m_progressBar, SLOT(setValue(int)) );
222 }
223 
224 void Nepomuk2::RestorePage::slotRestoreDone()
225 {
226  m_restoreDone = true;
227 
228  // vHanda: Maybe we shouldn't auto go to next
229  wizard()->next();
230 }
231 
232 
233 int Nepomuk2::RestorePage::nextId() const
234 {
235  if( !m_restoreDone )
236  return -1;
237 
238  return BackupWizard::Id_FileConflictPage;
239 }
240 
241 
242 
243 //
244 // Backup Settings Page
245 //
246 
247 Nepomuk2::BackupSettingsPage::BackupSettingsPage(QWidget *parent)
248  : QWizardPage(parent)
249 {
250  setupUi(this);
251  setTitle( i18n("Nepomuk Backup") );
252  setSubTitle( i18n("Please configure the Nepomuk backup") );
253  connect(m_editBackupUrl, SIGNAL(textChanged(QString)),
254  this, SIGNAL(completeChanged()));
255  connect(m_editBackupUrl, SIGNAL(urlSelected(KUrl)),
256  this, SIGNAL(completeChanged()));
257 
258  registerField(QLatin1String("backupUrl"), this, "backupUrl");
259 }
260 
261 KUrl Nepomuk2::BackupSettingsPage::backupUrl() const
262 {
263  return m_editBackupUrl->url();
264 }
265 
266 bool Nepomuk2::BackupSettingsPage::isComplete() const
267 {
268  const KUrl url = m_editBackupUrl->url();
269  return QDir( url.directory() ).exists() && url.isValid();
270 }
271 
272 int Nepomuk2::BackupSettingsPage::nextId() const
273 {
274  return BackupWizard::Id_BackupPage;
275 }
276 
277 
278 //
279 // Error Page
280 //
281 
282 Nepomuk2::ErrorPage::ErrorPage( QWidget* parent )
283  : QWizardPage(parent)
284 {
285  setupUi(this);
286  setFinalPage(true);
287  m_labelPixmap->setPixmap(KIcon(QLatin1String("dialog-error")).pixmap(48,48));
288  registerField( QLatin1String("errorMessage"), this, "errorMessage" );
289 }
290 
291 QString Nepomuk2::ErrorPage::message() const
292 {
293  return m_labelMessage->text();
294 }
295 
296 void Nepomuk2::ErrorPage::setMessage(const QString& s)
297 {
298  m_labelMessage->setText(s);
299 }
300 
301 //
302 // File Conflict
303 //
304 
305 Nepomuk2::FileConflictPage::FileConflictPage(QWidget* parent): QWizardPage(parent)
306 {
307  setTitle( i18n("Nepomuk Backup") );
308  setSubTitle( i18n("The following files were not found. Please either discard them or find them manually") );
309 }
310 
311 void Nepomuk2::FileConflictPage::initializePage()
312 {
313  m_conflictWidget = new FileConflictWidget( this );
314  if( m_conflictWidget->isEmpty() ) {
315  wizard()->next();
316  return;
317  }
318 
319  QVBoxLayout* layout = new QVBoxLayout( this );
320  layout->addWidget( m_conflictWidget );
321 
322  setLayout( layout );
323 }
324 
325 int Nepomuk2::FileConflictPage::nextId() const
326 {
327  return BackupWizard::Id_RestoreEndPage;
328 }
329 
330 
331 //
332 // Final Page
333 //
334 
335 Nepomuk2::RestoreEndPage::RestoreEndPage(QWidget* parent): QWizardPage(parent)
336 {
337 }
338 
339 void Nepomuk2::RestoreEndPage::initializePage()
340 {
341  setTitle( i18n("Nepomuk Backup") );
342  setSubTitle( i18n("The Backup has been successfully restored") );
343 
344  setFinalPage( true );
345 }
346 
347 int Nepomuk2::RestoreEndPage::nextId() const
348 {
349  // Without this a 'next' option in shown in the wizard. Weird.
350  return -1;
351 }
352 
353 
354 
355 
356 #include "backupwizardpages.moc"
backupwizardpages.h
Nepomuk2::BackupWizard::Id_BackupSettingsPage
Definition: backupwizard.h:40
QWizardPage
Nepomuk2::BackupPage::isComplete
bool isComplete() const
Definition: backupwizardpages.cpp:98
Nepomuk2::ErrorPage::ErrorPage
ErrorPage(QWidget *parent=0)
Definition: backupwizardpages.cpp:282
QWidget
Nepomuk2::RestorePage::RestorePage
RestorePage(QWidget *parent)
Definition: backupwizardpages.cpp:187
Nepomuk2::RestoreSelectionPage::RestoreSelectionPage
RestoreSelectionPage(QWidget *parent=0)
Definition: backupwizardpages.cpp:122
Nepomuk2::BackupWizard::Id_FileConflictPage
Definition: backupwizard.h:44
Nepomuk2::FileConflictPage::FileConflictPage
FileConflictPage(QWidget *parent=0)
Definition: backupwizardpages.cpp:305
Nepomuk2::RestoreEndPage::initializePage
void initializePage()
Definition: backupwizardpages.cpp:339
Nepomuk2::BackupSettingsPage::backupUrl
KUrl backupUrl() const
Nepomuk2::RestoreEndPage::RestoreEndPage
RestoreEndPage(QWidget *parent=0)
Definition: backupwizardpages.cpp:335
backupwizard.h
Nepomuk2::ErrorPage::setMessage
void setMessage(const QString &s)
Definition: backupwizardpages.cpp:296
Nepomuk2::ErrorPage::message
QString message() const
Definition: backupwizardpages.cpp:291
Nepomuk2::BackupSettingsPage::nextId
int nextId() const
Definition: backupwizardpages.cpp:272
Nepomuk2::BackupSettingsPage::BackupSettingsPage
BackupSettingsPage(QWidget *parent=0)
Definition: backupwizardpages.cpp:247
Nepomuk2::RestoreSelectionPage::isComplete
bool isComplete() const
Definition: backupwizardpages.cpp:153
Nepomuk2::BackupWizard::Id_RestoreEndPage
Definition: backupwizard.h:45
Nepomuk2::BackupPage::initializePage
void initializePage()
Definition: backupwizardpages.cpp:88
Nepomuk2::IntroPage::IntroPage
IntroPage(QWidget *parent=0)
Definition: backupwizardpages.cpp:41
Nepomuk2::RestorePage::initializePage
void initializePage()
Definition: backupwizardpages.cpp:213
resourcemanager.h
Nepomuk2::FileConflictPage::nextId
int nextId() const
Definition: backupwizardpages.cpp:325
Nepomuk2::RestoreSelectionPage::initializePage
void initializePage()
Definition: backupwizardpages.cpp:127
Nepomuk2::RestoreSelectionPage::nextId
int nextId() const
Definition: backupwizardpages.cpp:158
Nepomuk2::BackupPage::nextId
int nextId() const
Definition: backupwizardpages.cpp:103
Nepomuk2::BackupWizard::Id_RestorePage
Definition: backupwizard.h:42
Nepomuk2::RestoreEndPage::nextId
int nextId() const
Definition: backupwizardpages.cpp:347
Nepomuk2::BackupManager
org::kde::nepomuk::BackupManager BackupManager
Definition: backupwizardpages.h:42
Nepomuk2::BackupSettingsPage::isComplete
bool isComplete() const
Definition: backupwizardpages.cpp:266
Nepomuk2::BackupPage::BackupPage
BackupPage(QWidget *parent=0)
Definition: backupwizardpages.cpp:63
Nepomuk2::FileConflictPage::initializePage
void initializePage()
Definition: backupwizardpages.cpp:311
Nepomuk2::IntroPage::nextId
int nextId() const
Definition: backupwizardpages.cpp:49
Nepomuk2::BackupWizard::Id_BackupPage
Definition: backupwizard.h:41
Nepomuk2::FileConflictWidget
Definition: fileconflictwidget.h:32
Nepomuk2::BackupWizard::Id_RestoreSelectionPage
Definition: backupwizard.h:43
Nepomuk2::RestorePage::nextId
int nextId() const
Definition: backupwizardpages.cpp:233
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:48:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Nepomuk-Core

Skip menu "Nepomuk-Core"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal