added directory browsing and icon size slider

This commit is contained in:
itsmattkc
2018-12-24 23:20:55 +11:00
parent 28bdda4023
commit abff5da67b
8 changed files with 107 additions and 9 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

+2
View File
@@ -49,5 +49,7 @@
<file>transition-tool.png</file>
<file>transition-tool-disabled.png</file>
<file>error.png</file>
<file>dirup.png</file>
<file>dirup-disabled.png</file>
</qresource>
</RCC>
+4 -2
View File
@@ -96,7 +96,8 @@ SOURCES += \
project/effectgizmo.cpp \
io/clipboard.cpp \
dialogs/stabilizerdialog.cpp \
io/avtogl.cpp
io/avtogl.cpp \
ui/sourceiconview.cpp
HEADERS += \
mainwindow.h \
@@ -172,7 +173,8 @@ HEADERS += \
project/effectgizmo.h \
io/clipboard.h \
dialogs/stabilizerdialog.h \
io/avtogl.h
io/avtogl.h \
ui/sourceiconview.h
FORMS += \
mainwindow.ui \
+58 -5
View File
@@ -23,6 +23,7 @@
#include "io/clipboard.h"
#include "project/media.h"
#include "ui/sourcetable.h"
#include "ui/sourceiconview.h"
#include "debug.h"
#include <QApplication>
@@ -38,7 +39,6 @@
#include <QSortFilterProxyModel>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include <QListView>
#include <QSizePolicy>
#include <QVBoxLayout>
@@ -86,12 +86,47 @@ Project::Project(QWidget *parent) :
tree_view->setModel(sorter);
verticalLayout->addWidget(tree_view);
icon_view = new QListView(dockWidgetContents);
icon_view_container = new QWidget();
QVBoxLayout* icon_view_container_layout = new QVBoxLayout();
icon_view_container_layout->setMargin(0);
icon_view_container_layout->setSpacing(0);
icon_view_container->setLayout(icon_view_container_layout);
QHBoxLayout* icon_view_controls = new QHBoxLayout();
icon_view_controls->setMargin(0);
icon_view_controls->setSpacing(0);
QIcon directory_up_button;
directory_up_button.addFile(":/icons/dirup.png", QSize(), QIcon::Normal);
directory_up_button.addFile(":/icons/dirup-disabled.png", QSize(), QIcon::Disabled);
directory_up = new QPushButton();
directory_up->setIcon(directory_up_button);
directory_up->setEnabled(false);
icon_view_controls->addWidget(directory_up);
icon_view_controls->addStretch();
QSlider* icon_size_slider = new QSlider(Qt::Horizontal);
icon_size_slider->setMinimum(16);
icon_size_slider->setMaximum(120);
icon_view_controls->addWidget(icon_size_slider);
connect(icon_size_slider, SIGNAL(valueChanged(int)), this, SLOT(set_icon_view_size(int)));
icon_view_container_layout->addLayout(icon_view_controls);
icon_view = new SourceIconView(dockWidgetContents);
icon_view->project_parent = this;
icon_view->setModel(sorter);
icon_view->setIconSize(QSize(100, 100));
icon_view->setViewMode(QListView::IconMode);
icon_view->setUniformItemSizes(true);
verticalLayout->addWidget(icon_view);
icon_view_container_layout->addWidget(icon_view);
icon_size_slider->setValue(icon_view->iconSize().height());
verticalLayout->addWidget(icon_view_container);
QPushButton* tree_view_button = new QPushButton("Tree View");
verticalLayout->addWidget(tree_view_button);
@@ -100,6 +135,9 @@ Project::Project(QWidget *parent) :
verticalLayout->addWidget(icon_view_button);
connect(icon_view_button, SIGNAL(clicked(bool)), this, SLOT(set_icon_view()));
connect(directory_up, SIGNAL(clicked(bool)), this, SLOT(go_up_dir()));
connect(icon_view, SIGNAL(changed_root()), this, SLOT(set_up_dir_enabled()));
//retranslateUi(Project);
setWindowTitle(QApplication::translate("Project", "Project", nullptr));
@@ -1000,7 +1038,7 @@ void Project::save_project(bool autorecovery) {
void Project::update_view_type() {
tree_view->setVisible(config.project_view_type == PROJECT_VIEW_TREE);
icon_view->setVisible(config.project_view_type == PROJECT_VIEW_ICON);
icon_view_container->setVisible(config.project_view_type == PROJECT_VIEW_ICON);
}
void Project::set_icon_view() {
@@ -1032,7 +1070,22 @@ void Project::save_recent_projects() {
void Project::clear_recent_projects() {
recent_projects.clear();
save_recent_projects();
save_recent_projects();
}
void Project::set_icon_view_size(int s) {
icon_view->setIconSize(QSize(s, s));
// icon_view->setGridSize(QSize(s, s));
}
void Project::set_up_dir_enabled() {
dout << icon_view->rootIndex().isValid();
directory_up->setEnabled(icon_view->rootIndex().isValid());
}
void Project::go_up_dir() {
icon_view->setRootIndex(icon_view->rootIndex().parent());
set_up_dir_enabled();
}
void Project::add_recent_project(QString url) {
+8 -2
View File
@@ -20,7 +20,8 @@ class QXmlStreamReader;
class QFile;
class QSortFilterProxyModel;
class ComboAction;
class QListView;
class SourceIconView;
class QPushButton;
#define LOAD_TYPE_VERSION 69
#define LOAD_TYPE_URL 70
@@ -68,7 +69,7 @@ public:
QVector<Media*> list_all_project_sequences();
SourceTable* tree_view;
QListView* icon_view;
SourceIconView* icon_view;
QSortFilterProxyModel* sorter;
@@ -94,11 +95,16 @@ private:
void list_all_sequences_worker(QVector<Media *> *list, Media* parent);
QString get_file_name_from_path(const QString &path);
QDir proj_dir;
QWidget* icon_view_container;
QPushButton* directory_up;
private slots:
void update_view_type();
void set_icon_view();
void set_tree_view();
void clear_recent_projects();
void set_icon_view_size(int);
void set_up_dir_enabled();
void go_up_dir();
};
class MediaThrobber : public QObject {
+17
View File
@@ -0,0 +1,17 @@
#include "sourceiconview.h"
#include "panels/project.h"
#include "project/media.h"
#include "debug.h"
SourceIconView::SourceIconView(QWidget *parent) : QListView(parent) {}
void SourceIconView::mouseDoubleClickEvent(QMouseEvent *event) {
if (selectedIndexes().size() == 1) {
Media* m = project_parent->item_to_media(selectedIndexes().at(0));
if (m->get_type() == MEDIA_TYPE_FOLDER) {
setRootIndex(selectedIndexes().at(0));
emit changed_root();
}
}
}
+18
View File
@@ -0,0 +1,18 @@
#ifndef SOURCEICONVIEW_H
#define SOURCEICONVIEW_H
#include <QListView>
class Project;
class SourceIconView : public QListView {
Q_OBJECT
public:
SourceIconView(QWidget* parent = 0);
Project* project_parent;
void mouseDoubleClickEvent(QMouseEvent *event);
signals:
void changed_root();
};
#endif // SOURCEICONVIEW_H