[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