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