roviz  0.7
Code Documentation of roviz
abstract_workspace_gui.h
1 #ifndef ABSTRACT_WORKSPACE_GUI_H
2 #define ABSTRACT_WORKSPACE_GUI_H
3 
4 #include <QObject>
5 #include "item/item_view.h"
6 #include "helper/dom_helper.h"
7 #include "abstract_workspace.h"
8 #include "projectlist_dockwidget.h"
9 #include "project_manager.h"
10 #include "project_save_reminder_dialog.h"
11 
12 enum WorkspaceGuiType {
13  newWorkspace,
14  loadWorkspace,
15  editWorkspace
16 };
17 
18 class AbstractWorkspaceGui : public QObject
19 {
20  Q_OBJECT
21 public:
22  virtual ~AbstractWorkspaceGui();
23  virtual QDialog* dialogNewWorkspace(QDialog* parent = 0) const = 0;
24  virtual QDialog* dialogLoadWorkspace(QDialog* parent = 0) const = 0;
25  virtual QDialog* dialogEditWorkspace(QDialog* parent = 0, QSharedPointer<AbstractWorkspace> workspace = QSharedPointer<AbstractWorkspace>()) const = 0;
26  virtual QString workspaceTypeName() const = 0;
27  virtual void addListWidgetItem(QListWidget* parentListWidget) = 0;
28  virtual bool isTypeFriendly(const QSharedPointer<AbstractWorkspace>& workspace) const = 0;
29  virtual bool removeProject(const QSharedPointer<ProjectGui>& projectGui, bool showMessagebox = true) = 0;
30  virtual bool deleteProject(const QSharedPointer<ProjectGui>& projectGui, bool showMessagebox = true) = 0;
31  virtual void editProject(QSharedPointer<ProjectGui> projectGui) = 0;
32  virtual bool saveExternChangedProjects() = 0;
33  virtual void resetExternChangedProjects() = 0;
34  virtual void showChangeSourceDialog(const QSharedPointer<AbstractWorkspace>& workspace) = 0;
35  virtual bool exportToFileSystem(QString exportPath, ExportOptions options, QVector<QSharedPointer<AbstractProject>> projects) = 0;
36  virtual void searchProjectSource(QSharedPointer<ProjectGui> projectGui) = 0;
37  virtual void createProjectsFromImport(const QStringList& projectPaths, bool overwrite = false) = 0;
38 
39  QSharedPointer<AbstractWorkspace> workspace() const;
40  void setItemViewTabWidget(QTabWidget* itemViewTabWidget);
41  QTabWidget* itemViewTabWidget() const;
42  void setProjectListDockWidget(ProjectListDockWidget* projectListDockWidget);
43  ProjectListDockWidget* projectListDockWidget() const;
44  void setProjectManager(ProjectManager* projectManager);
45  ProjectManager* projectManager() const;
46  void deleteWorkspace(const QSharedPointer<AbstractWorkspace>& workspace);
47  bool openWorkspace(const QSharedPointer<AbstractWorkspace>& workspace);
48  bool closeWorkspace();
49  void addProjectGui(const QSharedPointer<ProjectGui>& projectGui);
50  bool loadProject(const QSharedPointer<ProjectGui>& projectGui);
51  bool unloadProject(const QSharedPointer<ProjectGui>& projectGui, bool saveReminder=true);
52  bool unloadProjects(const QVector<QSharedPointer<ProjectGui>>& projectGui);
53  bool unloadAllProjectsExceptThis(const QSharedPointer<ProjectGui>& projectGui);
54  bool unloadAllProjectsExceptVisible();
55  QMenu* switchWorkspaceMenu() const;
56  void setSwitchWorkspaceMenu(QMenu* switchWorkspaceMenu);
57  QSharedPointer<ProjectGui> projectGui(const QSharedPointer<AbstractProject>& project);
58 
59 private:
60  void setWorkspace(const QSharedPointer<AbstractWorkspace>& workspace);
61  void setGuiElements();
62  void unsetGuiElements();
63  bool showSaveReminder(const QVector<QSharedPointer<ProjectGui>>& dirtyProjects);
64  QSharedPointer<AbstractWorkspace> _workspace;
65  bool _isOpen = false;
66 
67 protected:
69 
70  template<typename T>
71  QSharedPointer<T> workspaceTypeCast(QSharedPointer<AbstractWorkspace> abstractWorkspace)
72  {
73  return qSharedPointerCast<T>(abstractWorkspace);
74  }
75 
76  ProjectListDockWidget* _projectListDockWidget = nullptr;
77  QTabWidget* _itemViewTabWidget = nullptr;
78  ProjectManager* _projectManager = nullptr;
79  QMenu* _switchWorkspaceMenu = nullptr;
80 
81  virtual void onProjectLoad(const QSharedPointer<ProjectGui>& projectGui);
82  virtual void onProjectUnload(const QSharedPointer<ProjectGui>& projectGui);
83 
84 signals:
85  void acceptWorkspace(QSharedPointer<AbstractWorkspace> workspace);
86  void showContextMenu(const QPoint& position);
87  void switchWorkspace();
88 
89 private slots:
90  void closeProjectTabWidget(int tabIndex);
91  void projectGuiLabelChanged(QSharedPointer<ProjectGui> projectGui);
92 
93 
94 public slots:
95  void workspaceMenuRequested(const QPoint& position);
96  void multiProjectMenuRequested(const QPoint& position, const QList<QSharedPointer<ProjectGui>> projectGuis);
97  void onSaveProject();
98  void onSaveAllProjects();
99  void onUnloadAllProjects();
100  void onLoadAllProjects();
101  void onRemoveSelectedProjects();
102  void onDeleteSelectedProjects();
103  void onUnloadAllProjectsExceptSelected();
104  void onEnableFastLoadForSelected(bool enable);
105 
106 };
107 #endif // ABSTRACT_WORKSPACE_GUI_H
Definition: projectlist_dockwidget.h:16
Definition: project_manager.h:8
Definition: export_import_helper.h:4
Definition: abstract_workspace_gui.h:18