00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef ProjectManager_H
00023 #define ProjectManager_H
00024
00025 #include "ContextItem.h"
00026 #include <QUndoGroup>
00027 #include <QList>
00028 #include <QTimer>
00029 #include <QStringList>
00030
00031
00032 class Project;
00033 class Sheet;
00034 class Command;
00035 class ResourcesManager;
00036 class QFileSystemWatcher;
00037
00038
00039 class ProjectManager : public ContextItem
00040 {
00041 Q_OBJECT
00042 Q_CLASSINFO("save_project", tr("Save Project"))
00043 Q_CLASSINFO("exit", tr("Exit application"))
00044
00045 public:
00046 Project* create_new_project(int numSheet, int numTracks, const QString& projectName);
00047 Project* create_new_project(const QString& templatefile, const QString& projectName);
00048
00049 int load_project(const QString& projectName);
00050 int load_renamed_project(const QString& name);
00051
00052 bool project_exists(const QString& title);
00053
00054 int create_projectfilebackup_dir(const QString& rootDir);
00055 int remove_project(const QString& title);
00056
00057 void scheduled_for_deletion(Sheet* sheet);
00058 void delete_sheet(Sheet* sheet);
00059 void set_current_project_dir(const QString& path);
00060 void add_valid_project_path(const QString& path);
00061 void remove_wrong_project_path(const QString& path);
00062
00063 int rename_project_dir(const QString& olddir, const QString& newdir);
00064 int restore_project_from_backup(const QString& projectdir, uint restoretime);
00065
00066 QList<uint> get_backup_date_times(const QString& projectdir);
00067 void start_incremental_backup(const QString& projectname);
00068
00069 Project* get_project();
00070 QUndoGroup* get_undogroup() const;
00071
00072 void start();
00073 void start(const QString& basepath, const QString& projectname);
00074
00075 public slots:
00076 Command* save_project();
00077 Command* exit();
00078 Command* undo();
00079 Command* redo();
00080
00081
00082 private:
00083 ProjectManager();
00084 ProjectManager(const ProjectManager&);
00085
00086 Project* currentProject;
00087 QList<Sheet*> m_deletionSheetList;
00088 bool m_exitInProgress;
00089 QStringList m_projectDirs;
00090 QFileSystemWatcher* m_watcher;
00091
00092 bool clientRequestInProgress;
00093 static QUndoGroup undogroup;
00094
00095 void set_current_project(Project* project);
00096 void cleanup_backupfiles_for_project(const QString& projectname);
00097 bool project_is_current(const QString& title);
00098
00099
00100 friend ProjectManager& pm();
00101
00102 signals:
00103 void projectLoaded(Project* );
00104 void aboutToDelete(Sheet* );
00105 void currentProjectDirChanged();
00106 void unsupportedProjectDirChangeDetected();
00107 void projectDirChangeDetected();
00108 void projectLoadFailed(QString,QString);
00109 void projectFileVersionMismatch(QString,QString);
00110
00111 private slots:
00112 void project_dir_rename_detected(const QString& dirname);
00113 };
00114
00115
00116
00117 ProjectManager& pm();
00118
00119
00120 ResourcesManager* resources_manager();
00121
00122 #endif