Olive
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
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/sourcescommon.h"
36 #include "ui/panel.h"
37 #include "ui/sourceiconview.h"
39 #include "undo/undo.h"
40 
41 #include "ui/sourcetable.h"
42 
43 #define LOAD_TYPE_VERSION 69
44 #define LOAD_TYPE_URL 70
45 
46 extern QString autorecovery_filename;
47 extern QStringList recent_projects;
48 
49 SequencePtr create_sequence_from_media(QVector<olive::timeline::MediaImportData> &media_list);
50 
51 QString get_channel_layout_name(int channels, uint64_t layout);
52 QString get_interlacing_name(int interlacing);
53 
54 class Project : public Panel {
55  Q_OBJECT
56 public:
57  explicit Project(QWidget *parent = nullptr);
58 
59  void ConnectFilterToModel();
61 
62  bool is_focused();
63  void clear();
65  QString get_next_sequence_name(QString start = nullptr);
66  void process_file_list(QStringList& files, bool recursive = false, MediaPtr replace = nullptr, Media *parent = nullptr);
67  void replace_media(MediaPtr item, QString filename);
69  bool reveal_media(Media *media, QModelIndex parent = QModelIndex());
70  void add_recent_project(QString url);
71 
72  void save_project(bool autorecovery);
73 
74  MediaPtr create_folder_internal(QString name);
75 
76  Media* item_to_media(const QModelIndex& index);
77  MediaPtr item_to_media_ptr(const QModelIndex &index);
78 
79  void save_recent_projects();
80 
81  QVector<Media*> list_all_project_sequences();
82 
83  QVector<Media*> last_imported_media;
84 
85  QModelIndexList get_current_selected();
86 
87  void get_all_media_from_table(QList<Media *> &items, QList<Media *> &list, int type = -1);
88 
89  bool IsToolbarVisible();
90  bool IsProjectWidget(QObject *child);
91 
92  virtual void Retranslate() override;
93 protected:
94 public slots:
95  void import_dialog();
96  void delete_selected_media();
97  void duplicate_selected();
99  void replace_selected_file();
100  void replace_clip_media();
101  void open_properties();
102  void new_folder();
103  void new_sequence();
104 
105  void SetToolbarVisible(bool visible);
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;
116  QPushButton* directory_up;
117  QLineEdit* toolbar_search;
118 
119  QWidget* toolbar_widget;
122 
125 private slots:
126  void update_view_type();
127  void set_icon_view();
128  void set_list_view();
129  void set_tree_view();
130  void clear_recent_projects();
131  void set_icon_view_size(int);
132  void set_up_dir_enabled();
133  void go_up_dir();
134  void make_new_menu();
135 };
136 
137 #endif // PROJECT_H
void ConnectFilterToModel()
Definition: project.cpp:213
Definition: panel.h:26
void process_file_list(QStringList &files, bool recursive=false, MediaPtr replace=nullptr, Media *parent=nullptr)
Definition: project.cpp:690
void new_sequence()
Definition: project.cpp:433
void new_folder()
Definition: project.cpp:418
QDir proj_dir
Definition: project.h:113
SourceTable * tree_view
Definition: project.h:120
QVector< Media * > list_all_project_sequences()
Definition: project.cpp:1439
void set_icon_view()
Definition: project.cpp:1345
void delete_clips_using_selected_media()
Definition: project.cpp:1011
void replace_clip_media()
Definition: project.cpp:361
Project(QWidget *parent=nullptr)
Definition: project.cpp:73
SequencePtr create_sequence_from_media(QVector< olive::timeline::MediaImportData > &media_list)
Definition: project.cpp:252
std::shared_ptr< Media > MediaPtr
Definition: media.h:43
void replace_selected_file()
Definition: project.cpp:337
void clear()
Definition: project.cpp:1046
void set_icon_view_size(int)
Definition: project.cpp:1383
int media_id
Definition: project.h:109
Definition: sourceiconview.h:40
void save_folder(QXmlStreamWriter &stream, int type, bool set_ids_only, const QModelIndex &parent=QModelIndex())
Definition: project.cpp:1073
void replace_media(MediaPtr item, QString filename)
Definition: project.cpp:347
Definition: sourcetable.h:33
void make_new_menu()
Definition: project.cpp:1401
QString get_next_sequence_name(QString start=nullptr)
Definition: project.cpp:228
QString autorecovery_filename
Definition: project.cpp:70
Definition: project.h:54
void save_recent_projects()
Definition: project.cpp:1361
QSlider * icon_size_slider
Definition: project.h:115
SourceIconView * icon_view
Definition: project.h:121
void SetToolbarVisible(bool visible)
Definition: project.cpp:515
QPushButton * directory_up
Definition: project.h:116
virtual void Retranslate() override
Definition: project.cpp:223
void import_dialog()
Definition: project.cpp:1001
bool is_focused()
Definition: project.cpp:470
The ComboAction class.
Definition: comboaction.h:19
QWidget * toolbar_widget
Definition: project.h:119
int folder_id
Definition: project.h:108
Definition: media.h:45
MediaPtr create_sequence_internal(ComboAction *ca, SequencePtr s, bool open, Media *parent)
Definition: project.cpp:439
void set_list_view()
Definition: project.cpp:1350
void update_view_type()
Definition: project.cpp:1322
QVector< Media * > last_imported_media
Definition: project.h:83
QWidget * icon_view_container
Definition: project.h:114
Media * item_to_media(const QModelIndex &index)
Definition: project.cpp:481
MediaPtr item_to_media_ptr(const QModelIndex &index)
Definition: project.cpp:485
QString get_file_name_from_path(const QString &path)
Definition: project.cpp:466
int sequence_id
Definition: project.h:110
Definition: sourcescommon.h:37
void set_tree_view()
Definition: project.cpp:1356
void go_up_dir()
Definition: project.cpp:1396
QModelIndexList get_current_selected()
Definition: project.cpp:1445
void save_project(bool autorecovery)
Definition: project.cpp:1272
void open_properties()
Definition: project.cpp:384
bool IsProjectWidget(QObject *child)
Definition: project.cpp:520
void add_recent_project(QString url)
Definition: project.cpp:1407
void clear_recent_projects()
Definition: project.cpp:1378
QStringList recent_projects
Definition: project.cpp:71
void DisconnectFilterToModel()
Definition: project.cpp:218
QString get_channel_layout_name(int channels, uint64_t layout)
Definition: media.cpp:51
bool IsToolbarVisible()
Definition: project.cpp:510
Definition: projectfilter.h:26
SourcesCommon sources_common
Definition: project.h:124
QString get_interlacing_name(int interlacing)
Definition: media.cpp:42
MediaPtr create_folder_internal(QString name)
Definition: project.cpp:474
void delete_selected_media()
Definition: project.cpp:539
bool reveal_media(Media *media, QModelIndex parent=QModelIndex())
Definition: project.cpp:947
void get_all_media_from_table(QList< Media * > &items, QList< Media * > &list, int type=-1)
Definition: project.cpp:495
void duplicate_selected()
Definition: project.cpp:319
void set_up_dir_enabled()
Definition: project.cpp:1392
void list_all_sequences_worker(QVector< Media * > *list, Media *parent)
Definition: project.cpp:1425
std::shared_ptr< Sequence > SequencePtr
Definition: media.h:38
ProjectFilter sorter
Definition: project.h:123
Media * get_selected_folder()
Definition: project.cpp:937
QLineEdit * toolbar_search
Definition: project.h:117