]> git.sur5r.net Git - minitube/blobdiff - src/sidebarheader.cpp
Update upstream source from tag 'upstream/3.6'
[minitube] / src / sidebarheader.cpp
index 91670a94503c89539f6ae1481a11380715f6f059..150db794ef696ee549f0c532439f5db287f1c9c6 100644 (file)
@@ -1,51 +1,70 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini <flavio.tordini@gmail.com>
+
+Minitube 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.
+
+Minitube 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 Minitube.  If not, see <http://www.gnu.org/licenses/>.
+
+$END_LICENSE */
+
 #include "sidebarheader.h"
-#include "utils.h"
+#include "fontutils.h"
+#include "iconutils.h"
+#include "mainwindow.h"
 #include "mediaview.h"
 #include "videosource.h"
-#include "fontutils.h"
 
-SidebarHeader::SidebarHeader(QWidget *parent) : QToolBar(parent) { }
+SidebarHeader::SidebarHeader(QWidget *parent) : QToolBar(parent) {}
 
 void SidebarHeader::setup() {
     static bool isSetup = false;
     if (isSetup) return;
     isSetup = true;
 
-    backAction = new QAction(
-                Utils::icon("go-previous"),
-                tr("&Back"), this);
+    setIconSize(QSize(16, 16));
+
+    backAction = new QAction(tr("&Back"), this);
+    IconUtils::setIcon(backAction, "go-previous");
     backAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Left));
     connect(backAction, SIGNAL(triggered()), MediaView::instance(), SLOT(goBack()));
     addAction(backAction);
 
-    forwardAction = new QAction(
-                Utils::icon("go-next"),
-                tr("&Back"), this);
+    forwardAction = new QAction(tr("&Forward"), this);
+    IconUtils::setIcon(forwardAction, "go-next");
     forwardAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Right));
     connect(forwardAction, SIGNAL(triggered()), MediaView::instance(), SLOT(goForward()));
     addAction(forwardAction);
 
-    foreach (QAction* action, actions()) {
+    const auto a = actions();
+    for (QAction *action : a) {
         window()->addAction(action);
-        action->setAutoRepeat(false);
+        MainWindow::instance()->setupAction(action);
     }
 
-    /*
     QWidget *spacerWidget = new QWidget(this);
     spacerWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
-    spacerWidget->setVisible(true);
     addWidget(spacerWidget);
-    */
 }
 
-QSize SidebarHeader::minimumSizeHint (void) const {
-    return(QSize(1, QFontMetrics(font()).height() * 1.9));
+QSize SidebarHeader::minimumSizeHint() const {
+    return QSize(160, QFontMetrics(font()).height() * 1.9);
 }
 
 void SidebarHeader::updateInfo() {
     setup();
 
-    QList<VideoSource*> history = MediaView::instance()->getHistory();
+    const QVector<VideoSource *> &history = MediaView::instance()->getHistory();
     int currentIndex = MediaView::instance()->getHistoryIndex();
 
     bool canGoForward = MediaView::instance()->canGoForward();
@@ -53,11 +72,9 @@ void SidebarHeader::updateInfo() {
     forwardAction->setEnabled(canGoForward);
     if (canGoForward) {
         VideoSource *nextVideoSource = history.at(currentIndex + 1);
-        forwardAction->setStatusTip(
-                    tr("Forward to %1")
-                    .arg(nextVideoSource->getName())
-                    + " (" + forwardAction->shortcut().toString(QKeySequence::NativeText) + ")"
-                    );
+        forwardAction->setStatusTip(tr("Forward to %1").arg(nextVideoSource->getName()) + " (" +
+                                    forwardAction->shortcut().toString(QKeySequence::NativeText) +
+                                    ")");
     }
 
     bool canGoBack = MediaView::instance()->canGoBack();
@@ -66,47 +83,49 @@ void SidebarHeader::updateInfo() {
     backAction->setEnabled(canGoBack);
     if (canGoBack) {
         VideoSource *previousVideoSource = history.at(currentIndex - 1);
-        backAction->setStatusTip(
-                    tr("Back to %1")
-                    .arg(previousVideoSource->getName())
-                    + " (" + backAction->shortcut().toString(QKeySequence::NativeText) + ")"
-                    );
+        backAction->setStatusTip(tr("Back to %1").arg(previousVideoSource->getName()) + " (" +
+                                 backAction->shortcut().toString(QKeySequence::NativeText) + ")");
     }
 
     VideoSource *currentVideoSource = history.at(currentIndex);
-    connect(currentVideoSource, SIGNAL(nameChanged(QString)),
-            SLOT(updateTitle(QString)), Qt::UniqueConnection);
+    connect(currentVideoSource, SIGNAL(nameChanged(QString)), SLOT(updateTitle(QString)),
+            Qt::UniqueConnection);
     setTitle(currentVideoSource->getName());
 }
 
-void SidebarHeader::updateTitle(QString title) {
+void SidebarHeader::updateTitle(const QString &title) {
     sender()->disconnect(this);
     setTitle(title);
 }
 
-void SidebarHeader::setTitle(QString title) {
+void SidebarHeader::setTitle(const QString &title) {
     this->title = title;
     update();
+
+    QVector<VideoSource *> history = MediaView::instance()->getHistory();
+    int currentIndex = MediaView::instance()->getHistoryIndex();
+    VideoSource *currentVideoSource = history.at(currentIndex);
+    for (QAction *action : videoSourceActions)
+        removeAction(action);
+    videoSourceActions = currentVideoSource->getActions();
+    addActions(videoSourceActions);
 }
 
 void SidebarHeader::paintEvent(QPaintEvent *event) {
-    QToolBar::paintEvent(event);
     if (title.isEmpty()) return;
     QPainter p(this);
-    p.setFont(FontUtils::smallBold());
-    p.setPen(Qt::white);
+    p.setPen(palette().windowText().color());
 
     const QRect r = rect();
 
     QString t = title;
     QRect textBox = p.boundingRect(r, Qt::AlignCenter, t);
     int i = 1;
-    static const int margin = 100;
-    while (textBox.width() > r.width() - margin) {
-        t = t.left(t.length() - i) + "...";
+    const int margin = forwardAction->isVisible() ? 50 : 25;
+    while (textBox.width() > r.width() - margin * 2 && t.length() > 3) {
+        t = t.left(t.length() - i).trimmed() + QStringLiteral("\u2026");
         textBox = p.boundingRect(r, Qt::AlignCenter, t);
         i++;
     }
-
     p.drawText(r, Qt::AlignCenter, t);
 }