]> git.sesse.net Git - kdenlive/blobdiff - src/mainwindow.cpp
Right mouse click on tabs to show / hide widget title bars
[kdenlive] / src / mainwindow.cpp
index 84a74679bf9758b9cf77adef707b036920e96b52..fa3a8346e7479420bfba344f6690b3d6eac0fdf3 100644 (file)
@@ -244,10 +244,15 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent
     tabifyDockWidget(m_clipMonitorDock, m_recMonitorDock);
 #endif
     setCentralWidget(m_timelineArea);
-
-
     setupGUI();
 
+    // Find QDockWidget tab bars and show / hide widget title bars on right click
+    QList <QTabBar *> tabs = findChildren<QTabBar *>();
+    for (int i = 0; i < tabs.count(); i++) {
+        tabs.at(i)->setContextMenuPolicy(Qt::CustomContextMenu);
+        connect(tabs.at(i), SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(slotSwitchTitles()));
+    }
+
     /*ScriptingPart* sp = new ScriptingPart(this, QStringList());
     guiFactory()->addClient(sp);*/
 
@@ -396,6 +401,7 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent
     m_timelineContextMenu->addAction(actionCollection()->action("delete_space"));
     m_timelineContextMenu->addAction(actionCollection()->action(KStandardAction::name(KStandardAction::Paste)));
 
+    m_timelineContextClipMenu->addAction(actionCollection()->action("edit_clip_duration"));
     m_timelineContextClipMenu->addAction(actionCollection()->action("delete_timeline_clip"));
     m_timelineContextClipMenu->addAction(actionCollection()->action("group_clip"));
     m_timelineContextClipMenu->addAction(actionCollection()->action("ungroup_clip"));
@@ -412,6 +418,7 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent
     //TODO: re-enable custom effects menu when it is implemented
     m_timelineContextClipMenu->addMenu(m_customEffectsMenu);
 
+    m_timelineContextTransitionMenu->addAction(actionCollection()->action("edit_clip_duration"));
     m_timelineContextTransitionMenu->addAction(actionCollection()->action("delete_timeline_clip"));
     m_timelineContextTransitionMenu->addAction(actionCollection()->action(KStandardAction::name(KStandardAction::Copy)));
 
@@ -1134,6 +1141,10 @@ void MainWindow::setupActions()
     ungroupClip->setData("ungroup_clip");
     connect(ungroupClip, SIGNAL(triggered(bool)), this, SLOT(slotUnGroupClips()));
 
+    KAction* editClipDuration = new KAction(KIcon("measure"), i18n("Edit Duration"), this);
+    collection->addAction("edit_clip_duration", editClipDuration);
+    connect(editClipDuration, SIGNAL(triggered(bool)), this, SLOT(slotEditClipDuration()));
+
     KAction* insertOvertwrite = new KAction(KIcon(), i18n("Insert Clip Zone in Timeline (Overwrite)"), this);
     insertOvertwrite->setShortcut(Qt::Key_V);
     collection->addAction("overwrite_to_in_point", insertOvertwrite);
@@ -1263,6 +1274,12 @@ void MainWindow::setupActions()
     showTimeline->setChecked(true);
     connect(showTimeline, SIGNAL(triggered(bool)), this, SLOT(slotShowTimeline(bool)));
 
+    QAction *showTitleBar = new KAction(i18n("Show Title Bars"), this);
+    collection->addAction("show_titlebars", showTitleBar);
+    showTitleBar->setCheckable(true);
+    connect(showTitleBar, SIGNAL(triggered(bool)), this, SLOT(slotShowTitleBars(bool)));
+    showTitleBar->setChecked(KdenliveSettings::showtitlebars());
+
     /*QAction *maxCurrent = new KAction(i18n("Maximize Current Widget"), this);
     collection->addAction("maximize_current", maxCurrent);
     maxCurrent->setCheckable(true);
@@ -2452,6 +2469,13 @@ void MainWindow::slotUnGroupClips()
     }
 }
 
+void MainWindow::slotEditClipDuration()
+{
+    if (m_activeTimeline) {
+        m_activeTimeline->projectView()->editClipDuration();
+    }
+}
+
 void MainWindow::slotAddProjectClip(KUrl url)
 {
     if (m_activeDocument)
@@ -2603,7 +2627,7 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
             }
             EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newprops, true);
             m_activeDocument->commandStack()->push(command);
-            m_activeTimeline->projectView()->slotUpdateClip(clip->getId());
+            //m_activeTimeline->projectView()->slotUpdateClip(clip->getId());
             m_activeDocument->setModified(true);
         }
         delete dia_ui;
@@ -3319,5 +3343,34 @@ void MainWindow::slotDeleteProjectClips(QStringList ids, QMap<QString, QString>
 
 }
 
+void MainWindow::slotShowTitleBars(bool show)
+{
+    if (show) {
+        m_effectStackDock->setTitleBarWidget(0);
+        m_clipMonitorDock->setTitleBarWidget(0);
+        m_projectMonitorDock->setTitleBarWidget(0);
+        m_recMonitorDock->setTitleBarWidget(0);
+        m_effectListDock->setTitleBarWidget(0);
+        m_transitionConfigDock->setTitleBarWidget(0);
+        m_projectListDock->setTitleBarWidget(0);
+        m_undoViewDock->setTitleBarWidget(0);
+    } else {
+        if (!m_effectStackDock->isFloating()) m_effectStackDock->setTitleBarWidget(new QWidget(this));
+        if (!m_clipMonitorDock->isFloating()) m_clipMonitorDock->setTitleBarWidget(new QWidget(this));
+        if (!m_projectMonitorDock->isFloating()) m_projectMonitorDock->setTitleBarWidget(new QWidget(this));
+        if (!m_recMonitorDock->isFloating()) m_recMonitorDock->setTitleBarWidget(new QWidget(this));
+        if (!m_effectListDock->isFloating()) m_effectListDock->setTitleBarWidget(new QWidget(this));
+        if (!m_transitionConfigDock->isFloating()) m_transitionConfigDock->setTitleBarWidget(new QWidget(this));
+        if (!m_projectListDock->isFloating()) m_projectListDock->setTitleBarWidget(new QWidget(this));
+        if (!m_undoViewDock->isFloating()) m_undoViewDock->setTitleBarWidget(new QWidget(this));
+    }
+    KdenliveSettings::setShowtitlebars(show);
+}
+
+void MainWindow::slotSwitchTitles()
+{
+    slotShowTitleBars(!KdenliveSettings::showtitlebars());
+}
+
 #include "mainwindow.moc"