+/* $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() {
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);
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);
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);
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);
}
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 ¶mName) {
+ QBoxLayout *hLayout = new QHBoxLayout();
hLayout->setSpacing(8);
hLayout->setMargin(0);
hLayout->setAlignment(Qt::AlignVCenter);
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;
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());
layout->addLayout(hLayout);
}
-QToolBar* RefineSearchWidget::setupBar(QString paramName) {
- QToolBar* bar = new QToolBar(this);
+QToolBar *RefineSearchWidget::setupBar(const QString ¶mName) {
+ 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) {
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;
- QToolBar* bar;
- QAction* action;
+ QToolBar *bar;
+ QAction *action;
bar = bars.value("sortBy");
action = bar->actions().at(params->sortBy());
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() {