]> git.sur5r.net Git - minitube/blobdiff - src/toolbarmenu.cpp
New upstream version 3.1
[minitube] / src / toolbarmenu.cpp
index e03dbacd28338e5d6e7c24b59490f127beede1ef..da26af2507e901d5c3e5939327877352d2156848 100644 (file)
@@ -1,6 +1,8 @@
 #include "toolbarmenu.h"
 #include "mainwindow.h"
 #include "sharetoolbar.h"
+#include "videodefinition.h"
+#include "yt3.h"
 
 ToolbarMenu::ToolbarMenu(QWidget *parent) : QMenu(parent) {
     MainWindow *w = MainWindow::instance();
@@ -22,16 +24,46 @@ ToolbarMenu::ToolbarMenu(QWidget *parent) : QMenu(parent) {
     widgetAction->setDefaultWidget(shareToolbar);
     addAction(widgetAction);
     addSeparator();
+
     addAction(w->getAction("compactView"));
     addAction(w->getAction("ontop"));
     addSeparator();
+
+    QToolBar *definitionToolbar = new QToolBar();
+    definitionToolbar->setStyleSheet("QToolButton { padding: 0}");
+    definitionToolbar->setToolButtonStyle(Qt::ToolButtonTextOnly);
+    definitionToolbar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+    QActionGroup *definitionGroup = new QActionGroup(this);
+    const VideoDefinition &preferredDefinition = YT3::instance().maxVideoDefinition();
+    int counter = 0;
+    for (auto defName : VideoDefinition::getDefinitionNames()) {
+        QAction *a = new QAction(defName);
+        a->setCheckable(true);
+        a->setChecked(preferredDefinition.getName() == defName);
+        connect(a, &QAction::triggered, this, [this, defName] {
+            MainWindow::instance()->setDefinitionMode(defName);
+            close();
+        });
+        definitionGroup->addAction(a);
+        definitionToolbar->addAction(a);
+        if (counter == 0) {
+            QWidget *w = definitionToolbar->widgetForAction(a);
+            w->setProperty("first", true);
+            counter++;
+        }
+    }
+    QWidgetAction *definitionAction = new QWidgetAction(this);
+    definitionAction->setDefaultWidget(definitionToolbar);
+    addAction(definitionAction);
+    addSeparator();
+
     addAction(w->getAction("clearRecentKeywords"));
 #ifndef APP_MAC
     addSeparator();
     addAction(w->getAction("toggleMenu"));
-#endif
     addSeparator();
     addMenu(w->getMenu("help"));
+#endif
 }
 
 void ToolbarMenu::showEvent(QShowEvent *e) {
@@ -40,9 +72,10 @@ void ToolbarMenu::showEvent(QShowEvent *e) {
     QStyleOptionMenuItem option;
     initStyleOption(&option, a);
     int leftMargin = option.maxIconWidth;
-#ifndef APP_MAC
-    // On Win & Linux the value is wrong
+#ifdef APP_WIN
     leftMargin *= 1.5;
 #endif
+    setStyleSheet("QToolBar > QToolButton[first] {margin-left:" + QString::number(leftMargin) +
+                  "px}");
     emit leftMarginChanged(leftMargin);
 }