[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdenlive/refactoring_timeline] src: Reintroduce enable/disable effect stack button, small ui fixes
From: Jean-Baptiste Mardelle <null () kde ! org>
Date: 2018-08-16 6:28:55
Message-ID: E1fqBmB-00014f-PN () code ! kde ! org
[Download RAW message or body]
Git commit 2da54ea10fbb415e004309c081f0e9c7d44e350c by Jean-Baptiste Mardelle.
Committed on 16/08/2018 at 06:28.
Pushed by mardelle into branch 'refactoring_timeline'.
Reintroduce enable/disable effect stack button, small ui fixes
M +44 -17 src/assets/assetpanel.cpp
M +6 -2 src/assets/assetpanel.hpp
M +1 -1 src/effects/effectstack/model/effectstackmodel.cpp
M +1 -1 src/effects/effectstack/model/effectstackmodel.hpp
M +17 -0 src/effects/effectstack/view/effectstackview.cpp
M +4 -0 src/effects/effectstack/view/effectstackview.hpp
M +1 -1 src/timeline2/model/trackmodel.cpp
https://commits.kde.org/kdenlive/2da54ea10fbb415e004309c081f0e9c7d44e350c
diff --git a/src/assets/assetpanel.cpp b/src/assets/assetpanel.cpp
index 6106afbae..77d9e798b 100644
--- a/src/assets/assetpanel.cpp
+++ b/src/assets/assetpanel.cpp
@@ -35,6 +35,7 @@
#include <KColorScheme>
#include <KColorUtils>
#include <KSqueezedTextLabel>
+#include <KDualAction>
#include <QApplication>
#include <QDebug>
#include <QHBoxLayout>
@@ -51,8 +52,14 @@ AssetPanel::AssetPanel(QWidget *parent)
, m_transitionWidget(new TransitionStackView(this))
, m_effectStackWidget(new EffectStackView(this))
{
- QHBoxLayout *tLayout = new QHBoxLayout;
- tLayout->addWidget(m_assetTitle);
+ QToolBar *buttonToolbar = new QToolBar(this);
+ buttonToolbar->addWidget(m_assetTitle);
+
+ // spacer
+ QWidget* empty = new QWidget();
+ empty->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Maximum);
+ buttonToolbar->addWidget(empty);
+
m_switchBuiltStack = new QToolButton(this);
m_switchBuiltStack->setIcon(QIcon::fromTheme(QStringLiteral("adjustlevels")));
m_switchBuiltStack->setToolTip(i18n("Adjust clip"));
@@ -60,26 +67,34 @@ AssetPanel::AssetPanel(QWidget *parent)
m_switchBuiltStack->setChecked(KdenliveSettings::showbuiltstack());
m_switchBuiltStack->setVisible(false);
// connect(m_switchBuiltStack, &QToolButton::toggled, m_effectStackWidget, \
&EffectStackView::switchBuiltStack);
- tLayout->addWidget(m_switchBuiltStack);
+ buttonToolbar->addWidget(m_switchBuiltStack);
- m_splitButton = new QToolButton(this);
- m_splitButton->setIcon(QIcon::fromTheme(QStringLiteral("view-split-left-right")));
+ m_splitButton = new KDualAction(i18n("Normal view"), i18n("Compare effect"), \
this); + m_splitButton->setActiveIcon(QIcon::fromTheme(QStringLiteral("view-right-close")));
+ m_splitButton->setInactiveIcon(QIcon::fromTheme(QStringLiteral("view-split-left-right")));
m_splitButton->setToolTip(i18n("Compare effect"));
- m_splitButton->setCheckable(true);
m_splitButton->setVisible(false);
- connect(m_splitButton, &QToolButton::toggled, this, \
&AssetPanel::processSplitEffect);
- tLayout->addWidget(m_splitButton);
+ connect(m_splitButton, &KDualAction::activeChangedByUser, this, \
&AssetPanel::processSplitEffect); + buttonToolbar->addAction(m_splitButton);
+
+ m_enableStackButton = new KDualAction(i18n("Effects disabled"), i18n("Effects \
enabled"), this); + \
m_enableStackButton->setInactiveIcon(QIcon::fromTheme(QStringLiteral("hint"))); + \
m_enableStackButton->setActiveIcon(QIcon::fromTheme(QStringLiteral("visibility"))); + \
connect(m_enableStackButton, &KDualAction::activeChangedByUser, this, \
&AssetPanel::enableStack); + m_enableStackButton->setVisible(false);
+ buttonToolbar->addAction(m_enableStackButton);
- m_timelineButton = new QToolButton(this);
- m_timelineButton->setIcon(QIcon::fromTheme(QStringLiteral("adjustlevels")));
+ m_timelineButton = new KDualAction(i18n("Hide keyframes"), i18n("Display \
keyframes in timeline"), this); + \
m_timelineButton->setInactiveIcon(QIcon::fromTheme(QStringLiteral("adjustlevels"))); \
+ m_timelineButton->setActiveIcon(QIcon::fromTheme(QStringLiteral("adjustlevels")));
m_timelineButton->setToolTip(i18n("Display keyframes in timeline"));
- m_timelineButton->setCheckable(true);
m_timelineButton->setVisible(false);
- connect(m_timelineButton, &QToolButton::toggled, this, \
&AssetPanel::showKeyframes);
- tLayout->addWidget(m_timelineButton);
+ connect(m_timelineButton, &KDualAction::activeChangedByUser, this, \
&AssetPanel::showKeyframes); + buttonToolbar->addAction(m_timelineButton);
- m_lay->addLayout(tLayout);
+ m_lay->addWidget(buttonToolbar);
m_lay->setContentsMargins(0, 0, 0, 0);
+ m_lay->setSpacing(0);
QVBoxLayout *lay = new QVBoxLayout(m_container);
lay->setContentsMargins(0, 0, 0, 0);
lay->addWidget(m_transitionWidget);
@@ -111,15 +126,17 @@ void AssetPanel::showTransition(int tid, \
std::shared_ptr<AssetParameterModel> tr m_assetTitle->setText(i18n("%1 properties", \
transitionName)); m_transitionWidget->setVisible(true);
m_timelineButton->setVisible(true);
+ m_enableStackButton->setVisible(false);
m_transitionWidget->setModel(transitionModel, QSize(), true);
}
void AssetPanel::showEffectStack(const QString &itemName, \
std::shared_ptr<EffectStackModel> effectsModel, QSize frameSize, bool showKeyframes) \
{
- m_splitButton->setChecked(false);
+ m_splitButton->setActive(false);
if (effectsModel == nullptr) {
// Item is not ready
m_splitButton->setVisible(false);
+ m_enableStackButton->setVisible(false);
clear();
return;
}
@@ -157,17 +174,19 @@ void AssetPanel::showEffectStack(const QString &itemName, \
std::shared_ptr<Effect }
m_assetTitle->setText(title);
m_splitButton->setVisible(showSplit);
+ m_enableStackButton->setVisible(id.first != ObjectType::TimelineComposition);
+ m_enableStackButton->setActive(effectsModel->isStackEnabled());
if (showSplit) {
m_splitButton->setEnabled(effectsModel->rowCount() > 0);
QObject::connect(effectsModel.get(), &EffectStackModel::dataChanged, [&](){
if (m_effectStackWidget->isEmpty()) {
- m_splitButton->setChecked(false);
+ m_splitButton->setActive(false);
}
m_splitButton->setEnabled(!m_effectStackWidget->isEmpty());
});
}
m_timelineButton->setVisible(enableKeyframes);
- m_timelineButton->setChecked(showKeyframes);
+ m_timelineButton->setActive(showKeyframes);
// Disable built stack until properly implemented
// m_switchBuiltStack->setVisible(true);
m_effectStackWidget->setVisible(true);
@@ -314,3 +333,11 @@ void AssetPanel::addEffect(const QString &effectId)
}
m_effectStackWidget->addEffect(effectId);
}
+
+void AssetPanel::enableStack(bool enable)
+{
+ if (!m_effectStackWidget->isVisible()) {
+ return;
+ }
+ m_effectStackWidget->enableStack(enable);
+}
diff --git a/src/assets/assetpanel.hpp b/src/assets/assetpanel.hpp
index 1e4c5b83f..89ab93968 100644
--- a/src/assets/assetpanel.hpp
+++ b/src/assets/assetpanel.hpp
@@ -29,6 +29,7 @@
#include "definitions.h"
class KSqueezedTextLabel;
+class KDualAction;
class QToolButton;
/** @brief This class is the widget that provides interaction with the asset \
currently selected. @@ -81,13 +82,16 @@ protected:
private:
QToolButton *m_switchBuiltStack;
- QToolButton *m_splitButton;
- QToolButton *m_timelineButton;
+ KDualAction *m_splitButton;
+ KDualAction *m_enableStackButton;
+ KDualAction *m_timelineButton;
private slots:
void processSplitEffect(bool enable);
/** Displays the owner clip keyframes in timeline */
void showKeyframes(bool enable);
+ /** Enable / disable effect stack */
+ void enableStack(bool enable);
signals:
void doSplitEffect(bool);
diff --git a/src/effects/effectstack/model/effectstackmodel.cpp \
b/src/effects/effectstack/model/effectstackmodel.cpp index 527110e75..5b3dd3dc5 \
100644
--- a/src/effects/effectstack/model/effectstackmodel.cpp
+++ b/src/effects/effectstack/model/effectstackmodel.cpp
@@ -782,7 +782,7 @@ const QString EffectStackModel::effectNames() const
return effects.join(QLatin1Char('/'));
}
-bool EffectStackModel::isEnabled() const
+bool EffectStackModel::isStackEnabled() const
{
return m_effectStackEnabled;
}
diff --git a/src/effects/effectstack/model/effectstackmodel.hpp \
b/src/effects/effectstack/model/effectstackmodel.hpp index 94327eebc..00c48b86a \
100644
--- a/src/effects/effectstack/model/effectstackmodel.hpp
+++ b/src/effects/effectstack/model/effectstackmodel.hpp
@@ -121,7 +121,7 @@ public:
/* @brief Returns a comma separated list of effect names */
const QString effectNames() const;
- bool isEnabled() const;
+ bool isStackEnabled() const;
public slots:
/* @brief Delete an effect from the stack */
diff --git a/src/effects/effectstack/view/effectstackview.cpp \
b/src/effects/effectstack/view/effectstackview.cpp index 384e8f085..fe2b43850 100644
--- a/src/effects/effectstack/view/effectstackview.cpp
+++ b/src/effects/effectstack/view/effectstackview.cpp
@@ -341,6 +341,23 @@ bool EffectStackView::isEmpty() const
return m_model == nullptr ? true : m_model->rowCount() == 0;
}
+
+void EffectStackView::enableStack(bool enable)
+{
+ if (m_model) {
+ m_model->setEffectStackEnabled(enable);
+ }
+}
+
+bool EffectStackView::isStackEnabled() const
+{
+ if (m_model) {
+ return m_model->isStackEnabled();
+ }
+ return false;
+}
+
+
/*
void EffectStackView::switchBuiltStack(bool show)
{
diff --git a/src/effects/effectstack/view/effectstackview.hpp \
b/src/effects/effectstack/view/effectstackview.hpp index 0427a1572..519ecad03 100644
--- a/src/effects/effectstack/view/effectstackview.hpp
+++ b/src/effects/effectstack/view/effectstackview.hpp
@@ -67,6 +67,10 @@ public:
/** @brief Returns true if effectstack is empty
*/
bool isEmpty() const;
+ /** @brief Enables / disables the stack
+ */
+ void enableStack(bool enable);
+ bool isStackEnabled() const;
protected:
void dragEnterEvent(QDragEnterEvent *event) override;
diff --git a/src/timeline2/model/trackmodel.cpp b/src/timeline2/model/trackmodel.cpp
index e668f22e9..ef5b49d14 100644
--- a/src/timeline2/model/trackmodel.cpp
+++ b/src/timeline2/model/trackmodel.cpp
@@ -1025,7 +1025,7 @@ const QString TrackModel::effectNames() const
bool TrackModel::stackEnabled() const
{
READ_LOCK();
- return m_effectStack->isEnabled();
+ return m_effectStack->isStackEnabled();
}
void TrackModel::setEffectStackEnabled(bool enable)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic