]> git.sur5r.net Git - minitube/blobdiff - src/refinesearchwidget.cpp
Upload 3.9.3-2 to unstable
[minitube] / src / refinesearchwidget.cpp
index f1a140ee827d6e457a518b85520bdc5f21fec36f..bbbe4938d3c9d90f6acbf840e240a5de79fc179d 100644 (file)
@@ -1,17 +1,35 @@
+/* $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 "refinesearchwidget.h"
-#include "fontutils.h"
 #include "searchparams.h"
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
 #include "extra.h"
 #endif
+#include "iconutils.h"
+#include "mainwindow.h"
 
-namespace The {
-QHash<QString, QAction*>* globalActions();
-}
-
-RefineSearchWidget::RefineSearchWidget(QWidget *parent) :
-    QWidget(parent) {
+RefineSearchWidget::RefineSearchWidget(QWidget *parent) : QWidget(parent) {
     dirty = false;
+    // Fixes background painting in fullscreen
+    setAutoFillBackground(true);
 }
 
 void RefineSearchWidget::setup() {
@@ -19,28 +37,23 @@ void RefineSearchWidget::setup() {
     if (isSetup) return;
     isSetup = true;
 
-    static const int spacing = 15;
-    setFont(FontUtils::medium());
+    const int spacing = 15;
 
     QBoxLayout *layout = new QVBoxLayout(this);
     layout->setAlignment(Qt::AlignTop | Qt::AlignHCenter);
-    layout->setMargin(spacing*2);
+    layout->setMargin(spacing);
     layout->setSpacing(spacing);
 
     QString paramName = "sortBy";
     setupLabel(tr("Sort by"), layout, paramName);
     QToolBar *sortBar = setupBar(paramName);
-    QActionGroup* sortGroup = new QActionGroup(this);
-    QStringList sortOptions = QStringList()
-            << tr("Relevance")
-            << tr("Date")
-            << tr("View Count")
-            << tr("Rating");
+    QActionGroup *sortGroup = new QActionGroup(this);
+    const QStringList sortOptions = QStringList() << tr("Relevance") << tr("Date")
+                                                  << tr("View Count") << tr("Rating");
     int i = 0;
-    foreach (QString actionName, sortOptions) {
+    for (const QString &actionName : sortOptions) {
         QAction *action = new QAction(actionName, sortBar);
         action->setCheckable(true);
-        action->setFont(FontUtils::medium());
         action->setProperty("paramValue", i);
         sortGroup->addAction(action);
         sortBar->addAction(action);
@@ -51,17 +64,13 @@ void RefineSearchWidget::setup() {
     layout->addSpacing(spacing);
     setupLabel(tr("Date"), layout, paramName);
     QToolBar *timeBar = setupBar(paramName);
-    QActionGroup* timeGroup = new QActionGroup(this);
-    QStringList timeSpans = QStringList()
-            << tr("Anytime")
-            << tr("Today")
-            << tr("7 Days")
-            << tr("30 Days");
+    QActionGroup *timeGroup = new QActionGroup(this);
+    const QStringList timeSpans = QStringList() << tr("Anytime") << tr("Today") << tr("7 Days")
+                                                << tr("30 Days") << tr("This year");
     i = 0;
-    foreach (QString actionName, timeSpans) {
+    for (const QString &actionName : timeSpans) {
         QAction *action = new QAction(actionName, timeBar);
         action->setCheckable(true);
-        action->setFont(FontUtils::medium());
         action->setProperty("paramValue", i);
         timeGroup->addAction(action);
         timeBar->addAction(action);
@@ -72,23 +81,17 @@ void RefineSearchWidget::setup() {
     layout->addSpacing(spacing);
     setupLabel(tr("Duration"), layout, paramName);
     QToolBar *lengthBar = setupBar(paramName);
-    QActionGroup* lengthGroup = new QActionGroup(this);
-    QStringList lengthOptions = QStringList()
-            << tr("All")
-            << tr("Short")
-            << tr("Medium")
-            << tr("Long");
+    QActionGroup *lengthGroup = new QActionGroup(this);
+    const QStringList lengthOptions = QStringList()
+                                      << tr("All") << tr("Short") << tr("Medium") << tr("Long");
     QStringList tips = QStringList()
-            << ""
-            << tr("Less than 4 minutes")
-            << tr("Between 4 and 20 minutes")
-            << tr("Longer than 20 minutes");
+                       << "" << tr("Less than 4 minutes") << tr("Between 4 and 20 minutes")
+                       << tr("Longer than 20 minutes");
     i = 0;
-    foreach (QString actionName, lengthOptions) {
+    for (const QString &actionName : lengthOptions) {
         QAction *action = new QAction(actionName, timeBar);
         action->setStatusTip(tips.at(i));
         action->setCheckable(true);
-        action->setFont(FontUtils::medium());
         action->setProperty("paramValue", i);
         lengthGroup->addAction(action);
         lengthBar->addAction(action);
@@ -99,19 +102,13 @@ void RefineSearchWidget::setup() {
     layout->addSpacing(spacing);
     setupLabel(tr("Quality"), layout, paramName);
     QToolBar *qualityBar = setupBar(paramName);
-    QActionGroup* qualityGroup = new QActionGroup(this);
-    QStringList qualityOptions = QStringList()
-            << tr("All")
-            << tr("High Definition");
-    tips = QStringList()
-            << ""
-            << tr("720p or higher");
+    QActionGroup *qualityGroup = new QActionGroup(this);
+    const QStringList qualityOptions = QStringList()
+                                       << tr("All") << tr("HD") << tr("4K") << tr("HDR");
     i = 0;
-    foreach (QString actionName, qualityOptions) {
+    for (const QString &actionName : qualityOptions) {
         QAction *action = new QAction(actionName, timeBar);
-        action->setStatusTip(tips.at(i));
         action->setCheckable(true);
-        action->setFont(FontUtils::medium());
         action->setProperty("paramValue", i);
         qualityGroup->addAction(action);
         qualityBar->addAction(action);
@@ -119,18 +116,23 @@ void RefineSearchWidget::setup() {
     }
 
     layout->addSpacing(spacing);
-    QPushButton *doneButton = new QPushButton(tr("Done"), this);
+    doneButton = new QPushButton(tr("Done"), this);
     doneButton->setDefault(true);
-    doneButton->setFont(FontUtils::medium());
+    doneButton->setAutoDefault(true);
+    doneButton->setFocusPolicy(Qt::StrongFocus);
+#ifndef APP_MAC
     doneButton->setProperty("custom", true);
     doneButton->setProperty("important", true);
     doneButton->setProperty("big", true);
+#endif
     connect(doneButton, SIGNAL(clicked()), SLOT(doneClicked()));
     layout->addWidget(doneButton, 0, Qt::AlignLeft);
 }
 
-void RefineSearchWidget::setupLabel(QString text, QBoxLayout *layout, QString paramName) {
-    QBoxLayout* hLayout = new QHBoxLayout();
+void RefineSearchWidget::setupLabel(const QString &text,
+                                    QBoxLayout *layout,
+                                    const QString &paramName) {
+    QBoxLayout *hLayout = new QHBoxLayout();
     hLayout->setSpacing(8);
     hLayout->setMargin(0);
     hLayout->setAlignment(Qt::AlignVCenter);
@@ -138,10 +140,11 @@ void RefineSearchWidget::setupLabel(QString text, QBoxLayout *layout, QString pa
     QLabel *icon = new QLabel(this);
     icon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
     QString resource = paramName;
-#ifndef Q_WS_X11
-    resource = Extra::resourceName(resource);
-#endif
-    QPixmap pixmap = QPixmap(":/images/search-" + resource + ".png");
+    QByteArray iconName = QByteArrayLiteral("search-") + resource.toLatin1();
+    QPixmap pixmap = IconUtils::iconPixmap(iconName.constData(), 16, palette().window().color(),
+                                           devicePixelRatioF());
+
+    /*
     QPixmap translucentPixmap(pixmap.size());
     translucentPixmap.fill(Qt::transparent);
     QPainter painter;
@@ -149,12 +152,11 @@ void RefineSearchWidget::setupLabel(QString text, QBoxLayout *layout, QString pa
     painter.setOpacity(0.5);
     painter.drawPixmap(0, 0, pixmap);
     painter.end();
-    icon->setPixmap(translucentPixmap);
+    */
+    icon->setPixmap(pixmap);
     hLayout->addWidget(icon);
 
-    QLabel *label = new QLabel(text.toUpper(), this);
-    label->setFont(FontUtils::mediumBold());
-    label->setStyleSheet("color: rgba(0, 0, 0, 128);");
+    QLabel *label = new QLabel(text, this);
     hLayout->addWidget(label);
 
     icon->setMaximumHeight(label->height());
@@ -162,32 +164,17 @@ void RefineSearchWidget::setupLabel(QString text, QBoxLayout *layout, QString pa
     layout->addLayout(hLayout);
 }
 
-QToolBar* RefineSearchWidget::setupBar(QString paramName) {
-    QToolBarbar = new QToolBar(this);
+QToolBar *RefineSearchWidget::setupBar(const QString &paramName) {
+    QToolBar *bar = new QToolBar(this);
     bar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
     // bar->setProperty("segmented", true);
-    bar->setFont(FontUtils::medium());
     bar->setProperty("paramName", paramName);
-    connect(bar, SIGNAL(actionTriggered(QAction*)),
-            SLOT(actionTriggered(QAction*)));
+    connect(bar, SIGNAL(actionTriggered(QAction *)), SLOT(actionTriggered(QAction *)));
     bars.insert(paramName, bar);
     layout()->addWidget(bar);
     return bar;
 }
 
-void RefineSearchWidget::paintEvent(QPaintEvent * /*event*/) {
-#if defined(APP_MAC) | defined(APP_WIN)
-    QBrush brush;
-    if (window()->isActiveWindow()) {
-        brush = QBrush(QColor(0xdd, 0xe4, 0xeb));
-    } else {
-        brush = palette().window();
-    }
-    QPainter painter(this);
-    painter.fillRect(0, 0, width(), height(), brush);
-#endif
-}
-
 void RefineSearchWidget::actionTriggered(QAction *action) {
     QToolBar *bar = static_cast<QToolBar *>(sender());
     if (!bar) {
@@ -207,15 +194,13 @@ void RefineSearchWidget::actionTriggered(QAction *action) {
 void RefineSearchWidget::setSearchParams(SearchParams *params) {
     setup();
 
-    qDebug() << (params != 0);
-
-    The::globalActions()->value("refine-search")->setEnabled(params);
+    MainWindow::instance()->getAction("refineSearch")->setEnabled(params);
     setEnabled(params);
 
     if (!params) return;
 
-    QToolBarbar;
-    QActionaction;
+    QToolBar *bar;
+    QAction *action;
 
     bar = bars.value("sortBy");
     action = bar->actions().at(params->sortBy());
@@ -233,12 +218,13 @@ void RefineSearchWidget::setSearchParams(SearchParams *params) {
     action = bar->actions().at(params->quality());
     if (action) action->setChecked(true);
 
-    disconnect(SIGNAL(paramChanged(QString,QVariant)));
-    connect(this, SIGNAL(paramChanged(QString,QVariant)),
-            params, SLOT(setParam(QString,QVariant)),
-            Qt::UniqueConnection);
+    disconnect(SIGNAL(paramChanged(QString, QVariant)));
+    connect(this, SIGNAL(paramChanged(QString, QVariant)), params,
+            SLOT(setParam(QString, QVariant)), Qt::UniqueConnection);
 
     dirty = false;
+
+    doneButton->setFocus();
 }
 
 void RefineSearchWidget::doneClicked() {