]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/qt-console/restore/restore.h
Backport from Bacula Enterprise
[bacula/bacula] / bacula / src / qt-console / restore / restore.h
index 1f5be13dedbcdcb36f42a1e4e416527fbf3904c9..87106350025aed331486a55118b825559b7ee52c 100644 (file)
 #define _RESTORE_H_
 
 /*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
-
-   The main author of Bacula is Kern Sibbald, with contributions from
-   many others, a complete list can be found in the file AUTHORS.
-   This program is Free Software; you can redistribute it and/or
-   modify it under the terms of version two of the GNU General Public
-   License as published by the Free Software Foundation plus additions
-   that are listed in the file LICENSE.
-
-   This program 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 this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA.
-
-   Bacula® is a registered trademark of John Walker.
-   The licensor of Bacula is the Free Software Foundation Europe
-   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
-   Switzerland, email:ftf@fsfeurope.org.
+   Bacula(R) - The Network Backup Solution
+
+   Copyright (C) 2000-2015 Kern Sibbald
+   Copyright (C) 2007-2014 Free Software Foundation Europe e.V.
+
+   The original author of Bacula is Kern Sibbald, with contributions
+   from many others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   This notice must be preserved when any source code is 
+   conveyed and/or propagated.
+
+   Bacula(R) is a registered trademark of Kern Sibbald.
 */
 /*
- *   Version $Id$
  *
  *  Kern Sibbald, February 2007
  */
 
+#include <stdint.h>
+#include <sys/types.h>     /* Needed for some systems */
 #include <QtGui>
+#include "pages.h"
+#include "ui_runrestore.h"
+
+class bRestoreTable : public QTableWidget
+{
+   Q_OBJECT 
+private:
+   QPoint dragStartPosition;
+public:
+   bRestoreTable(QWidget *parent)
+      : QTableWidget(parent)
+   {
+   }
+   void mousePressEvent(QMouseEvent *event);
+   void mouseMoveEvent(QMouseEvent *event);
+
+   void dragEnterEvent(QDragEnterEvent *event);
+   void dragMoveEvent(QDragMoveEvent *event);
+   void dropEvent(QDropEvent *event);
+};
+
 #include "ui_brestore.h"
 #include "ui_restore.h"
 #include "ui_prerestore.h"
 
-class Console;
+enum {
+   R_NONE,
+   R_JOBIDLIST,
+   R_JOBDATETIME
+};
 
-class prerestoreDialog : public QDialog, public Ui::prerestoreForm
+/*
+ * The pre-restore dialog selects the Job/Client to be restored
+ * It really could use considerable enhancement.
+ */
+class prerestorePage : public Pages, public Ui::prerestoreForm
 {
    Q_OBJECT 
 
 public:
-   prerestoreDialog(Console *parent);
+   prerestorePage();
+   prerestorePage(QString &data, unsigned int);
 
-public slots:
-   void accept();
-   void reject();
+private slots:
+   void okButtonPushed();
+   void cancelButtonPushed();
    void job_name_change(int index);
+   void recentChanged(int);
+   void jobRadioClicked(bool);
+   void jobidsRadioClicked(bool);
+   void jobIdEditFinished();
 
 private:
-   Console *m_console;
-
+   int m_conn;
+   int jobdefsFromJob(QStringList &, QString &);
+   void buildPage();
+   bool checkJobIdList();
+   QString m_dataIn;
+   unsigned int m_dataInType;
 };
 
-class restoreDialog : public QDialog, public Ui::restoreForm
+/*  
+ * The restore dialog is brought up once we are in the Bacula
+ * restore tree routines.  It handles putting up a GUI tree
+ * representation of the files to be restored.
+ */
+class restorePage : public Pages, public Ui::restoreForm
 {
    Q_OBJECT 
 
 public:
-   restoreDialog(Console *parent);
-   void fillDirectory(const char *path);
-
-public slots:
+   restorePage(int conn);
+   ~restorePage();
+   void fillDirectory();
+   char *get_cwd();
+   bool cwd(const char *);
+
+private slots:
+   void okButtonPushed();
+   void cancelButtonPushed();
+   void fileDoubleClicked(QTreeWidgetItem *item, int column);
+   void directoryItemChanged(QTreeWidgetItem *, QTreeWidgetItem *);
+   void upButtonPushed();
+   void unmarkButtonPushed();
+   void markButtonPushed();
+   void addDirectory(QString &);
 
 private:
-   Console *m_console;
-   QString m_fname;
-
+   int m_conn;
+   void writeSettings();
+   void readSettings();
+   QString m_cwd;
+   QHash<QString, QTreeWidgetItem *> m_dirPaths;
+   QHash<QTreeWidgetItem *,QString> m_dirTreeItems;
+   QRegExp m_rx;
+   QString m_splitText;
 };
 
-
-class bRestore : public QWidget, public Ui::bRestoreForm
+class bRestore : public Pages, public Ui::bRestoreForm
 {
    Q_OBJECT 
 
 public:
-   bRestore(QStackedWidget *parent);
+   bRestore();
+   ~bRestore();
+   void PgSeltreeWidgetClicked();
+   QString m_client;
+   QString m_jobids;
+   void get_info_from_selection(QStringList &fileids, QStringList &jobids,
+                                QStringList &dirids, QStringList &fileindexes);
 
 public slots:
-
+   void setClient();
+   void setJob();
+   void showInfoForFile(QTableWidgetItem *);
+   void applyLocation();
+   void clearVersions(QTableWidgetItem *);
+   void clearRestoreList();
+   void runRestore();
+   void refreshView();
 private:
-
+   QString m_path;
+   int64_t m_pathid;
+   QTableWidgetItem *m_current;
+   void setupPage();
+   bool m_populated;
+   void displayFiles(int64_t pathid, QString path);
+   void displayFileVersion(QString pathid, QString fnid, 
+                           QString client, QString filename);
 };
 
+class bRunRestore : public QDialog, public Ui::bRunRestoreForm
+{
+   Q_OBJECT 
+private:
+   bRestore *brestore;
+   QStringList m_fileids, m_jobids, m_dirids, m_findexes;
 
+public:
+   bRunRestore(bRestore *parent);
+   ~bRunRestore() {}
+   void computeVolumeList();
+   int64_t runRestore(QString tablename);
+
+public slots:
+   void useRegexp();
+   void UFRcb();
+   void computeRestore();
+};
 
 #endif /* _RESTORE_H_ */