Olive
project.h
Go to the documentation of this file.
1 /***
2 
3  Olive - Non-Linear Video Editor
4  Copyright (C) 2019 Olive Team
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 
19 ***/
20 
21 #ifndef PROJECT_H
22 #define PROJECT_H
23 
24 #include <QVector>
25 #include <QTimer>
26 #include <QDir>
27 #include <QXmlStreamReader>
28 #include <QXmlStreamWriter>
29 #include <QFile>
30 #include <QPushButton>
31 
32 #include "project/projectmodel.h"
33 #include "project/projectfilter.h"
35 #include "project/undo.h"
36 #include "project/sourcescommon.h"
37 #include "ui/panel.h"
38 #include "ui/sourceiconview.h"
39 
40 #include "ui/sourcetable.h"
41 
42 #define LOAD_TYPE_VERSION 69
43 #define LOAD_TYPE_URL 70
44 
45 extern QString autorecovery_filename;
46 extern QStringList recent_projects;
47 
48 SequencePtr create_sequence_from_media(QVector<Media *> &media_list);
49 
50 QString get_channel_layout_name(int channels, uint64_t layout);
51 QString get_interlacing_name(int interlacing);
52 
53 class Project : public Panel {
54  Q_OBJECT
55 public:
56  explicit Project(QWidget *parent = nullptr);
57  ~Project();
58 
59  bool is_focused();
60  void clear();
61  Media* create_sequence_internal(ComboAction *ca, SequencePtr s, bool open, Media* parent);
62  QString get_next_sequence_name(QString start = nullptr);
63  void process_file_list(QStringList& files, bool recursive = false, Media* replace = nullptr, Media *parent = nullptr);
64  void replace_media(Media* item, QString filename);
66  bool reveal_media(Media *media, QModelIndex parent = QModelIndex());
67  void add_recent_project(QString url);
68 
69  void new_project();
70  void load_project(bool autorecovery);
71  void save_project(bool autorecovery);
72 
73  Media* create_folder_internal(QString name);
74  Media* item_to_media(const QModelIndex& index);
75 
76  void save_recent_projects();
77 
78  QVector<Media*> list_all_project_sequences();
79 
83 
85 
86  QVector<Media*> last_imported_media;
87 
88  QModelIndexList get_current_selected();
89 
90  void start_preview_generator(Media* item, bool replacing);
91  void get_all_media_from_table(QList<Media *> &items, QList<Media *> &list, int type = -1);
92 
93  QWidget* toolbar_widget;
94 protected:
95  virtual void Retranslate() override;
96 public slots:
97  void import_dialog();
98  void delete_selected_media();
99  void duplicate_selected();
101  void replace_selected_file();
102  void replace_clip_media();
103  void open_properties();
104  void new_folder();
105  void new_sequence();
106 private:
107  void save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only, const QModelIndex &parent = QModelIndex());
109  int media_id;
111  void list_all_sequences_worker(QVector<Media *> *list, Media* parent);
112  QString get_file_name_from_path(const QString &path);
113  QDir proj_dir;
115  QPushButton* directory_up;
116  QLineEdit* toolbar_search;
117 private slots:
118  void update_view_type();
119  void set_icon_view();
120  void set_tree_view();
121  void clear_recent_projects();
122  void set_icon_view_size(int);
123  void set_up_dir_enabled();
124  void go_up_dir();
125  void make_new_menu();
126 };
127 
128 #endif // PROJECT_H
QWidget * icon_view_container
Definition: project.h:114
SequencePtr create_sequence_from_media(QVector< Media * > &media_list)
Definition: project.cpp:265
QModelIndexList get_current_selected()
Definition: project.cpp:1345
void go_up_dir()
Definition: project.cpp:1296
QWidget * toolbar_widget
Definition: project.h:93
Media * get_selected_folder()
Definition: project.cpp:845
bool reveal_media(Media *media, QModelIndex parent=QModelIndex())
Definition: project.cpp:855
void new_sequence()
Definition: project.cpp:444
Definition: sourcetable.h:31
ProjectFilter * sorter
Definition: project.h:84
The ComboAction class.
Definition: comboaction.h:19
void replace_media(Media *item, QString filename)
Definition: project.cpp:358
void load_project(bool autorecovery)
Definition: project.cpp:980
void update_view_type()
Definition: project.cpp:1242
QPushButton * directory_up
Definition: project.h:115
void make_new_menu()
Definition: project.cpp:1301
void replace_selected_file()
Definition: project.cpp:348
bool is_focused()
Definition: project.cpp:482
void get_all_media_from_table(QList< Media * > &items, QList< Media * > &list, int type=-1)
Definition: project.cpp:498
QLineEdit * toolbar_search
Definition: project.h:116
Media * create_sequence_internal(ComboAction *ca, SequencePtr s, bool open, Media *parent)
Definition: project.cpp:450
void duplicate_selected()
Definition: project.cpp:330
Definition: media.h:42
QString get_file_name_from_path(const QString &path)
Definition: project.cpp:472
void clear_recent_projects()
Definition: project.cpp:1283
int media_id
Definition: project.h:109
Definition: panel.h:26
Project(QWidget *parent=nullptr)
Definition: project.cpp:72
Definition: project.h:53
void set_tree_view()
Definition: project.cpp:1261
~Project()
Definition: project.cpp:232
Media * item_to_media(const QModelIndex &index)
Definition: project.cpp:493
SourceIconView * icon_view
Definition: project.h:81
Definition: sourceiconview.h:28
Definition: sourcescommon.h:38
Definition: projectfilter.h:26
void set_icon_view()
Definition: project.cpp:1256
QVector< Media * > last_imported_media
Definition: project.h:86
void new_folder()
Definition: project.cpp:429
void set_icon_view_size(int)
Definition: project.cpp:1288
void delete_selected_media()
Definition: project.cpp:527
void process_file_list(QStringList &files, bool recursive=false, Media *replace=nullptr, Media *parent=nullptr)
Definition: project.cpp:680
void import_dialog()
Definition: project.cpp:909
QDir proj_dir
Definition: project.h:113
virtual void Retranslate() override
Definition: project.cpp:236
std::shared_ptr< Sequence > SequencePtr
Definition: clip.h:48
QString get_next_sequence_name(QString start=nullptr)
Definition: project.cpp:241
QVector< Media * > list_all_project_sequences()
Definition: project.cpp:1339
QString autorecovery_filename
Definition: project.cpp:69
void list_all_sequences_worker(QVector< Media * > *list, Media *parent)
Definition: project.cpp:1325
void clear()
Definition: project.cpp:954
Media * create_folder_internal(QString name)
Definition: project.cpp:486
void save_folder(QXmlStreamWriter &stream, int type, bool set_ids_only, const QModelIndex &parent=QModelIndex())
Definition: project.cpp:994
void save_recent_projects()
Definition: project.cpp:1266
QString get_channel_layout_name(int channels, uint64_t layout)
Definition: media.cpp:50
void add_recent_project(QString url)
Definition: project.cpp:1307
int folder_id
Definition: project.h:108
QStringList recent_projects
Definition: project.cpp:70
QString get_interlacing_name(int interlacing)
Definition: media.cpp:41
void start_preview_generator(Media *item, bool replacing)
Definition: project.cpp:671
void save_project(bool autorecovery)
Definition: project.cpp:1192
void set_up_dir_enabled()
Definition: project.cpp:1292
void delete_clips_using_selected_media()
Definition: project.cpp:919
SourceTable * tree_view
Definition: project.h:80
int sequence_id
Definition: project.h:110
SourcesCommon * sources_common
Definition: project.h:82
void open_properties()
Definition: project.cpp:395
void replace_clip_media()
Definition: project.cpp:372
void new_project()
Definition: project.cpp:972