diff --git a/app/dialog/export/codec/CMakeLists.txt b/app/dialog/export/codec/CMakeLists.txt index 7f4e2b5c8..5666454f7 100644 --- a/app/dialog/export/codec/CMakeLists.txt +++ b/app/dialog/export/codec/CMakeLists.txt @@ -16,11 +16,14 @@ set(OLIVE_SOURCES ${OLIVE_SOURCES} - dialog/export/codec/codecsection.h dialog/export/codec/codecsection.cpp - dialog/export/codec/h264section.h + dialog/export/codec/codecsection.h + dialog/export/codec/codecstack.cpp + dialog/export/codec/codecstack.h dialog/export/codec/h264section.cpp - dialog/export/codec/imagesection.h + dialog/export/codec/h264section.cpp + dialog/export/codec/h264section.h dialog/export/codec/imagesection.cpp + dialog/export/codec/imagesection.h PARENT_SCOPE ) diff --git a/app/dialog/export/codec/codecstack.cpp b/app/dialog/export/codec/codecstack.cpp new file mode 100644 index 000000000..cdffb12cd --- /dev/null +++ b/app/dialog/export/codec/codecstack.cpp @@ -0,0 +1,53 @@ +/*** + + Olive - Non-Linear Video Editor + Copyright (C) 2021 Olive Team + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +***/ + +#include "codecstack.h" + +namespace olive { + +#define super QStackedWidget + +CodecStack::CodecStack(QWidget *parent) + : super{parent} +{ + connect(this, &CodecStack::currentChanged, this, &CodecStack::OnChange); +} + +void CodecStack::addWidget(QWidget *widget) +{ + super::addWidget(widget); + + OnChange(currentIndex()); +} + +void CodecStack::OnChange(int index) +{ + for (int i=0; isetSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + } else { + widget(i)->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); + } + widget(i)->adjustSize(); + } + adjustSize(); +} + +} diff --git a/app/dialog/export/codec/codecstack.h b/app/dialog/export/codec/codecstack.h new file mode 100644 index 000000000..116f8754c --- /dev/null +++ b/app/dialog/export/codec/codecstack.h @@ -0,0 +1,45 @@ +/*** + + Olive - Non-Linear Video Editor + Copyright (C) 2021 Olive Team + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +***/ + +#ifndef CODECSTACK_H +#define CODECSTACK_H + +#include + +namespace olive { + +class CodecStack : public QStackedWidget +{ + Q_OBJECT +public: + explicit CodecStack(QWidget *parent = nullptr); + + void addWidget(QWidget *widget); + +signals: + +private slots: + void OnChange(int index); + +}; + +} + +#endif // CODECSTACK_H diff --git a/app/dialog/export/exportvideotab.cpp b/app/dialog/export/exportvideotab.cpp index e4ec88b33..85087535a 100644 --- a/app/dialog/export/exportvideotab.cpp +++ b/app/dialog/export/exportvideotab.cpp @@ -173,7 +173,7 @@ QWidget *ExportVideoTab::SetupCodecSection() row++; - codec_stack_ = new QStackedWidget(); + codec_stack_ = new CodecStack(); codec_layout->addWidget(codec_stack_, row, 0, 1, 2); image_section_ = new ImageSection(); diff --git a/app/dialog/export/exportvideotab.h b/app/dialog/export/exportvideotab.h index ce74d5a0a..9db9cf57d 100644 --- a/app/dialog/export/exportvideotab.h +++ b/app/dialog/export/exportvideotab.h @@ -26,6 +26,7 @@ #include #include "common/rational.h" +#include "dialog/export/codec/codecstack.h" #include "dialog/export/codec/h264section.h" #include "dialog/export/codec/imagesection.h" #include "node/color/colormanager/colormanager.h" @@ -155,7 +156,7 @@ private: QCheckBox* maintain_aspect_checkbox_; QComboBox* scaling_method_combobox_; - QStackedWidget* codec_stack_; + CodecStack* codec_stack_; ImageSection* image_section_; H264Section* h264_section_; H264Section* h265_section_;