Olive
project.h
1 #ifndef PROJECT_H
2 #define PROJECT_H
3 
4 #include <QDockWidget>
5 #include <QVector>
6 #include <QTimer>
7 #include <QDir>
8 
9 #include "project/projectmodel.h"
10 #include "project/projectfilter.h"
11 
12 struct Footage;
13 struct Sequence;
14 class Clip;
15 class Timeline;
16 class Viewer;
17 class SourceTable;
18 class Media;
19 class QXmlStreamWriter;
20 class QXmlStreamReader;
21 class QFile;
22 class ProjectFilter;
23 class ComboAction;
24 class SourceIconView;
25 class QPushButton;
26 class SourcesCommon;
27 
28 #define LOAD_TYPE_VERSION 69
29 #define LOAD_TYPE_URL 70
30 
31 extern QString autorecovery_filename;
32 extern QStringList recent_projects;
33 extern ProjectModel project_model;
34 
35 Sequence* create_sequence_from_media(QVector<Media *> &media_list);
36 
37 QString get_channel_layout_name(int channels, uint64_t layout);
38 QString get_interlacing_name(int interlacing);
39 
40 class Project : public QDockWidget {
41  Q_OBJECT
42 public:
43  explicit Project(QWidget *parent = 0);
44  ~Project();
45  bool is_focused();
46  void clear();
47  Media* create_sequence_internal(ComboAction *ca, Sequence* s, bool open, Media* parent);
48  QString get_next_sequence_name(QString start = 0);
49  void process_file_list(QStringList& files, bool recursive = false, Media* replace = nullptr, Media *parent = nullptr);
50  void replace_media(Media* item, QString filename);
51  Media *get_selected_folder();
52  bool reveal_media(Media *media, QModelIndex parent = QModelIndex());
53  void add_recent_project(QString url);
54 
55  void new_project();
56  void load_project(bool autorecovery);
57  void save_project(bool autorecovery);
58 
59  Media* create_folder_internal(QString name);
60  Media* item_to_media(const QModelIndex& index);
61 
62  void save_recent_projects();
63 
64  QVector<Media*> list_all_project_sequences();
65 
66  SourceTable* tree_view;
67  SourceIconView* icon_view;
68  SourcesCommon* sources_common;
69 
70  ProjectFilter* sorter;
71 
72  QVector<Media*> last_imported_media;
73 
74  QModelIndexList get_current_selected();
75 
76  void start_preview_generator(Media* item, bool replacing);
77  void get_all_media_from_table(QList<Media *> &items, QList<Media *> &list, int type = -1);
78 
79  QWidget* toolbar_widget;
80 public slots:
81  void import_dialog();
82  void delete_selected_media();
83  void duplicate_selected();
84  void delete_clips_using_selected_media();
85  void replace_selected_file();
86  void replace_clip_media();
87  void open_properties();
88  void new_folder();
89  void new_sequence();
90 private:
91  void save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only, const QModelIndex &parent = QModelIndex());
92  int folder_id;
93  int media_id;
94  int sequence_id;
95  void list_all_sequences_worker(QVector<Media *> *list, Media* parent);
96  QString get_file_name_from_path(const QString &path);
97  QDir proj_dir;
98  QWidget* icon_view_container;
99  QPushButton* directory_up;
100 private slots:
101  void update_view_type();
102  void set_icon_view();
103  void set_tree_view();
104  void clear_recent_projects();
105  void set_icon_view_size(int);
106  void set_up_dir_enabled();
107  void go_up_dir();
108  void make_new_menu();
109 };
110 
111 class MediaThrobber : public QObject {
112  Q_OBJECT
113 public:
115 public slots:
116  void start();
117  void stop(int, bool replace);
118 private slots:
119  void animation_update();
120 private:
121  QPixmap pixmap;
122  int animation;
123  Media* item;
124  QTimer* animator;
125 };
126 
127 #endif // PROJECT_H
Definition: sequence.h:13
Definition: projectmodel.h:8
Definition: sourcetable.h:11
Definition: undo.h:32
Definition: timeline.h:71
Definition: media.h:20
Definition: project.h:111
Definition: project.h:40
Definition: sourceiconview.h:8
Definition: sourcescommon.h:16
Definition: projectfilter.h:6
Definition: clip.h:33
Definition: viewer.h:25
Definition: footage.h:46