]> git.sur5r.net Git - minitube/blob - src/toolbarmenu.cpp
Upload 3.9.3-2 to unstable
[minitube] / src / toolbarmenu.cpp
1 #include "toolbarmenu.h"
2 #include "mainwindow.h"
3 #include "sharetoolbar.h"
4 #include "videodefinition.h"
5 #include "yt3.h"
6
7 ToolbarMenu::ToolbarMenu(QWidget *parent) : QMenu(parent) {
8     MainWindow *w = MainWindow::instance();
9     addAction(w->getAction("stopafterthis"));
10     addSeparator();
11 #ifdef APP_SNAPSHOT
12     addAction(w->getAction("snapshot"));
13 #endif
14     addAction(w->getAction("findVideoParts"));
15     addSeparator();
16     addAction(w->getAction("webpage"));
17     addAction(w->getAction("videolink"));
18     addAction(w->getAction("openInBrowser"));
19     addAction(w->getAction("download"));
20     addSeparator();
21     QWidgetAction *widgetAction = new QWidgetAction(this);
22     ShareToolbar *shareToolbar = new ShareToolbar();
23     connect(this, &ToolbarMenu::leftMarginChanged, shareToolbar, &ShareToolbar::setLeftMargin);
24     widgetAction->setDefaultWidget(shareToolbar);
25     addAction(widgetAction);
26     addSeparator();
27
28     addAction(w->getAction("compactView"));
29     addAction(w->getAction("ontop"));
30     addSeparator();
31
32     QToolBar *definitionToolbar = new QToolBar();
33     definitionToolbar->setStyleSheet("QToolButton { padding: 0}");
34     definitionToolbar->setToolButtonStyle(Qt::ToolButtonTextOnly);
35     definitionToolbar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
36     QActionGroup *definitionGroup = new QActionGroup(this);
37     const VideoDefinition &preferredDefinition = YT3::instance().maxVideoDefinition();
38     int counter = 0;
39     for (auto defName : VideoDefinition::getDefinitionNames()) {
40         QAction *a = new QAction(defName);
41         a->setCheckable(true);
42         a->setChecked(preferredDefinition.getName() == defName);
43         connect(a, &QAction::triggered, this, [this, defName] {
44             MainWindow::instance()->setDefinitionMode(defName);
45             close();
46         });
47         definitionGroup->addAction(a);
48         definitionToolbar->addAction(a);
49         if (counter == 0) {
50             QWidget *w = definitionToolbar->widgetForAction(a);
51             w->setProperty("first", true);
52             counter++;
53         }
54     }
55     QWidgetAction *definitionAction = new QWidgetAction(this);
56     definitionAction->setDefaultWidget(definitionToolbar);
57     addAction(definitionAction);
58     addSeparator();
59
60     addAction(w->getAction("clearRecentKeywords"));
61 #ifndef APP_MAC
62     addSeparator();
63     addAction(w->getAction("toggleMenu"));
64     addSeparator();
65     addMenu(w->getMenu("help"));
66 #endif
67 }
68
69 void ToolbarMenu::showEvent(QShowEvent *e) {
70     Q_UNUSED(e);
71     QAction *a = MainWindow::instance()->getAction("stopafterthis");
72     QStyleOptionMenuItem option;
73     initStyleOption(&option, a);
74     int leftMargin = option.maxIconWidth;
75 #ifdef APP_WIN
76     leftMargin *= 1.5;
77 #endif
78     setStyleSheet("QToolBar > QToolButton[first] {margin-left:" + QString::number(leftMargin) +
79                   "px}");
80     emit leftMarginChanged(leftMargin);
81 }