implemented majority of export dialog widget layout

This commit is contained in:
itsmattkc
2019-12-15 19:56:12 +11:00
parent eb7c63bace
commit 83cf67fe7b
8 changed files with 250 additions and 12 deletions
+4
View File
@@ -18,5 +18,9 @@ set(OLIVE_SOURCES
${OLIVE_SOURCES}
dialog/export/export.h
dialog/export/export.cpp
dialog/export/exportaudiotab.h
dialog/export/exportaudiotab.cpp
dialog/export/exportvideotab.h
dialog/export/exportvideotab.cpp
PARENT_SCOPE
)
+71 -11
View File
@@ -1,13 +1,18 @@
#include "export.h"
#include <QComboBox>
#include <QDialogButtonBox>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QOpenGLWidget>
#include <QPushButton>
#include <QScrollArea>
#include <QSplitter>
#include "exportvideotab.h"
#include "exportaudiotab.h"
#include "ui/icons/icons.h"
ExportDialog::ExportDialog(QWidget *parent) :
QDialog(parent)
{
@@ -18,21 +23,76 @@ ExportDialog::ExportDialog(QWidget *parent) :
QWidget* preferences_area = new QWidget();
QGridLayout* preferences_layout = new QGridLayout(preferences_area);
preferences_layout->addWidget(new QLabel(tr("Filename:")), 0, 0);
preferences_layout->addWidget(new QLineEdit(), 0, 1);
preferences_layout->addWidget(new QLabel(tr("Preset:")), 1, 0);
preferences_layout->addWidget(new QComboBox(), 1, 1);
int row = 0;
QLabel* fn_lbl = new QLabel(tr("Filename:"));
fn_lbl->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
preferences_layout->addWidget(fn_lbl, row, 0);
QLineEdit* filename_edit = new QLineEdit();
preferences_layout->addWidget(filename_edit, row, 1, 1, 2);
QPushButton* file_browse_btn = new QPushButton();
file_browse_btn->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
file_browse_btn->setIcon(olive::icon::Folder);
preferences_layout->addWidget(file_browse_btn, row, 3);
row++;
QLabel* preset_lbl = new QLabel(tr("Preset:"));
preset_lbl->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
preferences_layout->addWidget(preset_lbl, row, 0);
preferences_layout->addWidget(new QComboBox(), row, 1);
QPushButton* preset_load_btn = new QPushButton();
preset_load_btn->setIcon(olive::icon::Open);
preset_load_btn->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
preferences_layout->addWidget(preset_load_btn, row, 2);
QPushButton* preset_save_btn = new QPushButton();
preset_save_btn->setIcon(olive::icon::Save);
preset_save_btn->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
preferences_layout->addWidget(preset_save_btn, row, 3);
row++;
QFrame* horizontal_line = new QFrame();
horizontal_line->setFrameShape(QFrame::HLine);
horizontal_line->setFrameShadow(QFrame::Sunken);
preferences_layout->addWidget(horizontal_line, row, 0, 1, 4);
row++;
preferences_layout->addWidget(new QLabel(tr("Format:")), row, 0);
preferences_layout->addWidget(new QComboBox(), row, 1, 1, 3);
row++;
QTabWidget* preferences_tabs = new QTabWidget();
preferences_tabs->addTab(new QWidget(), tr("Video"));
preferences_tabs->addTab(new QWidget(), tr("Audio"));
preferences_layout->addWidget(preferences_tabs, 2, 0, 1, 2);
preferences_layout->addWidget(new QPushButton(tr("Export")), 3, 0);
preferences_layout->addWidget(new QPushButton(tr("Cancel")), 3, 1);
QScrollArea* video_area = new QScrollArea();
video_area->setWidgetResizable(true);
video_area->setWidget(new ExportVideoTab());
preferences_tabs->addTab(video_area, tr("Video"));
QScrollArea* audio_area = new QScrollArea();
audio_area->setWidgetResizable(true);
audio_area->setWidget(new ExportAudioTab());
preferences_tabs->addTab(audio_area, tr("Audio"));
preferences_layout->addWidget(preferences_tabs, row, 0, 1, 4);
row++;
QDialogButtonBox* buttons = new QDialogButtonBox();
buttons->setCenterButtons(true);
buttons->addButton(tr("Export"), QDialogButtonBox::AcceptRole);
buttons->addButton(QDialogButtonBox::Cancel);
connect(buttons, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttons, SIGNAL(rejected()), this, SLOT(reject()));
preferences_layout->addWidget(buttons, row, 0, 1, 4);
splitter->addWidget(preferences_area);
QWidget* preview_area = new QWidget();
QVBoxLayout* preview_layout = new QVBoxLayout(preview_area);
preview_layout->addWidget(new QLabel(tr("Preview")));
preview_layout->addWidget(new QOpenGLWidget());
preview_viewer_ = new ViewerWidget();
preview_viewer_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
preview_layout->addWidget(preview_viewer_);
splitter->addWidget(preview_area);
}
+5
View File
@@ -3,10 +3,15 @@
#include <QDialog>
#include "widget/viewer/viewer.h"
class ExportDialog : public QDialog
{
public:
ExportDialog(QWidget* parent = nullptr);
private:
ViewerWidget* preview_viewer_;
};
#endif // EXPORTDIALOG_H
+36
View File
@@ -0,0 +1,36 @@
#include "exportaudiotab.h"
#include <QComboBox>
#include <QGridLayout>
#include <QLabel>
ExportAudioTab::ExportAudioTab(QWidget* parent) :
QWidget(parent)
{
QVBoxLayout* outer_layout = new QVBoxLayout(this);
QGridLayout* layout = new QGridLayout();
outer_layout->addLayout(layout);
int row = 0;
layout->addWidget(new QLabel(tr("Codec:")), row, 0);
layout->addWidget(new QComboBox(), row, 1);
row++;
layout->addWidget(new QLabel(tr("Sample Rate:")), row, 0);
layout->addWidget(new QComboBox(), row, 1);
row++;
layout->addWidget(new QLabel(tr("Channel Layout:")), row, 0);
layout->addWidget(new QComboBox(), row, 1);
row++;
layout->addWidget(new QLabel(tr("Format:")), row, 0);
layout->addWidget(new QComboBox(), row, 1);
outer_layout->addStretch();
}
+12
View File
@@ -0,0 +1,12 @@
#ifndef EXPORTAUDIOTAB_H
#define EXPORTAUDIOTAB_H
#include <QWidget>
class ExportAudioTab : public QWidget
{
public:
ExportAudioTab(QWidget* parent = nullptr);
};
#endif // EXPORTAUDIOTAB_H
+104
View File
@@ -0,0 +1,104 @@
#include "exportvideotab.h"
#include <QCheckBox>
#include <QComboBox>
#include <QGridLayout>
#include <QGroupBox>
#include <QLabel>
#include "widget/slider/integerslider.h"
ExportVideoTab::ExportVideoTab(QWidget *parent) :
QWidget(parent)
{
QVBoxLayout* outer_layout = new QVBoxLayout(this);
outer_layout->addWidget(SetupResolutionSection());
outer_layout->addWidget(SetupColorSection());
outer_layout->addWidget(SetupCodecSection());
outer_layout->addStretch();
}
QWidget* ExportVideoTab::SetupResolutionSection()
{
int row = 0;
QGroupBox* resolution_group = new QGroupBox();
resolution_group->setTitle(tr("Basic"));
QGridLayout* layout = new QGridLayout(resolution_group);
layout->addWidget(new QLabel(tr("Width:")), row, 0);
IntegerSlider* width_slider = new IntegerSlider();
layout->addWidget(width_slider, row, 1);
row++;
layout->addWidget(new QLabel(tr("Height:")), row, 0);
IntegerSlider* height_slider = new IntegerSlider();
layout->addWidget(height_slider, row, 1);
row++;
layout->addWidget(new QLabel(tr("Maintain Aspect Ratio:")), row, 0);
layout->addWidget(new QCheckBox(), row, 1);
row++;
layout->addWidget(new QLabel(tr("Scaling Method:")), row, 0);
layout->addWidget(new QComboBox(), row, 1);
row++;
layout->addWidget(new QLabel(tr("Frame Rate:")), row, 0);
layout->addWidget(new QComboBox(), row, 1);
return resolution_group;
}
QWidget* ExportVideoTab::SetupColorSection()
{
int row = 0;
QGroupBox* color_group = new QGroupBox();
color_group->setTitle(tr("Color Management"));
QGridLayout* color_layout = new QGridLayout(color_group);
color_layout->addWidget(new QLabel(tr("Display:")), row, 0);
color_layout->addWidget(new QComboBox(), row, 1);
row++;
color_layout->addWidget(new QLabel(tr("View:")), row, 0);
color_layout->addWidget(new QComboBox(), row, 1);
row++;
color_layout->addWidget(new QLabel(tr("Look:")), row, 0);
color_layout->addWidget(new QComboBox(), row, 1);
row++;
return color_group;
}
QWidget *ExportVideoTab::SetupCodecSection()
{
int row = 0;
QGroupBox* codec_group = new QGroupBox();
codec_group->setTitle(tr("Codec"));
QGridLayout* codec_layout = new QGridLayout(codec_group);
codec_layout->addWidget(new QLabel(tr("Codec:")), row, 0);
codec_layout->addWidget(new QComboBox(), row, 1);
return codec_group;
}
+17
View File
@@ -0,0 +1,17 @@
#ifndef EXPORTVIDEOTAB_H
#define EXPORTVIDEOTAB_H
#include <QWidget>
class ExportVideoTab : public QWidget
{
public:
ExportVideoTab(QWidget* parent = nullptr);
private:
QWidget* SetupResolutionSection();
QWidget* SetupColorSection();
QWidget* SetupCodecSection();
};
#endif // EXPORTVIDEOTAB_H
+1 -1
View File
@@ -45,7 +45,7 @@ class ViewerWidget : public QWidget
{
Q_OBJECT
public:
ViewerWidget(QWidget* parent);
ViewerWidget(QWidget* parent = nullptr);
void SetPlaybackControlsEnabled(bool enabled);