added directory browsing and icon size slider
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
@@ -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>
|
||||
|
||||
@@ -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
@@ -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
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user