SearchView::SearchView(QWidget *parent) : View(parent) { #if defined(APP_MAC) | defined(APP_WIN) // speedup painting since we'll paint the whole background // by ourselves anyway in paintEvent() setAttribute(Qt::WA_OpaquePaintEvent); #endif QBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->setMargin(PADDING); mainLayout->setSpacing(0); // hidden message widget message = new QLabel(this); message->hide(); mainLayout->addWidget(message); mainLayout->addStretch(); QBoxLayout *hLayout = new QHBoxLayout(); hLayout->setAlignment(Qt::AlignCenter); mainLayout->addLayout(hLayout); QLabel *logo = new QLabel(this); logo->setPixmap(IconUtils::pixmap(":/images/app.png")); hLayout->addWidget(logo, 0, Qt::AlignTop); hLayout->addSpacing(PADDING); QVBoxLayout *layout = new QVBoxLayout(); layout->setAlignment(Qt::AlignCenter); hLayout->addLayout(layout); QLabel *welcomeLabel = new QLabel("<h1 style='font-weight:100'>" + tr("Welcome to <a href='%1'>%2</a>,") .replace("<a ", "<a style='text-decoration:none; color:palette(text);font-weight:normal' ") .arg(Constants::WEBSITE, Constants::NAME) + "</h1>", this); welcomeLabel->setOpenExternalLinks(true); welcomeLabel->setProperty("heading", true); #ifdef APP_MAC QFont f = welcomeLabel->font(); f.setFamily("Helvetica Neue"); f.setStyleName("Thin"); welcomeLabel->setFont(f); #elif APP_WIN QFont f = welcomeLabel->font(); f.setFamily("Segoe UI Light"); welcomeLabel->setFont(f); #endif layout->addWidget(welcomeLabel); layout->addSpacing(PADDING / 2); QBoxLayout *tipLayout = new QHBoxLayout(); tipLayout->setSpacing(10); #ifndef APP_MAC const QFont &biggerFont = FontUtils::big(); #endif //: "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos" QLabel *tipLabel = new QLabel(tr("Enter"), this); #ifndef APP_MAC tipLabel->setFont(biggerFont); #endif tipLayout->addWidget(tipLabel); typeCombo = new QComboBox(this); typeCombo->addItem(tr("a keyword")); typeCombo->addItem(tr("a channel")); #ifndef APP_MAC typeCombo->setFont(biggerFont); #endif connect(typeCombo, SIGNAL(currentIndexChanged(int)), SLOT(searchTypeChanged(int))); tipLayout->addWidget(typeCombo); tipLabel = new QLabel(tr("to start watching videos."), this); #ifndef APP_MAC tipLabel->setFont(biggerFont); #endif tipLayout->addWidget(tipLabel); layout->addLayout(tipLayout); layout->addSpacing(PADDING / 2); QHBoxLayout *searchLayout = new QHBoxLayout(); searchLayout->setAlignment(Qt::AlignVCenter); #ifdef APP_MAC_SEARCHFIELD queryEdit = new SearchLineEditMac(this); #else SearchLineEdit *sle = new SearchLineEdit(this); sle->setFont(biggerFont); queryEdit = sle; #endif connect(queryEdit->toWidget(), SIGNAL(search(const QString&)), SLOT(watch(const QString&))); connect(queryEdit->toWidget(), SIGNAL(textChanged(const QString &)), SLOT(textChanged(const QString &))); connect(queryEdit->toWidget(), SIGNAL(suggestionAccepted(Suggestion*)), SLOT(suggestionAccepted(Suggestion*))); youtubeSuggest = new YTSuggester(this); channelSuggest = new ChannelSuggest(this); searchTypeChanged(0); searchLayout->addWidget(queryEdit->toWidget()); searchLayout->addSpacing(10); watchButton = new QPushButton(tr("Watch"), this); #ifndef APP_MAC watchButton->setFont(biggerFont); #endif watchButton->setDefault(true); watchButton->setEnabled(false); watchButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); connect(watchButton, SIGNAL(clicked()), this, SLOT(watch())); searchLayout->addWidget(watchButton); layout->addItem(searchLayout); layout->addSpacing(PADDING / 2); QHBoxLayout *otherLayout = new QHBoxLayout(); otherLayout->setMargin(0); otherLayout->setSpacing(10); recentKeywordsLayout = new QVBoxLayout(); recentKeywordsLayout->setSpacing(5); recentKeywordsLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft); recentKeywordsLabel = new QLabel(tr("Recent keywords"), this); recentKeywordsLabel->setProperty("recentHeader", true); recentKeywordsLabel->hide(); recentKeywordsLayout->addWidget(recentKeywordsLabel); otherLayout->addLayout(recentKeywordsLayout); // recent channels recentChannelsLayout = new QVBoxLayout(); recentChannelsLayout->setSpacing(5); recentChannelsLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft); recentChannelsLabel = new QLabel(tr("Recent channels"), this); recentChannelsLabel->setProperty("recentHeader", true); recentChannelsLabel->setForegroundRole(QPalette::Dark); recentChannelsLabel->hide(); recentChannelsLayout->addWidget(recentChannelsLabel); otherLayout->addLayout(recentChannelsLayout); layout->addLayout(otherLayout); mainLayout->addStretch(); #ifdef APP_ACTIVATION if (!Activation::instance().isActivated()) mainLayout->addWidget(Extra::buyButton(tr("Get the full version")), 0, Qt::AlignRight); #endif }
SearchView::SearchView(QWidget *parent) : QWidget(parent) { QFont biggerFont = FontUtils::big(); QFont smallerFont = FontUtils::smallBold(); #if defined(APP_MAC) | defined(APP_WIN) // speedup painting since we'll paint the whole background // by ourselves anyway in paintEvent() setAttribute(Qt::WA_OpaquePaintEvent); #endif QBoxLayout *mainLayout = new QVBoxLayout(); mainLayout->setMargin(0); mainLayout->setSpacing(0); // hidden message widget message = new QLabel(this); message->hide(); mainLayout->addWidget(message); #ifdef APP_DEMO QLabel *buy = new QLabel(this); buy->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); buy->setText(QString("<a style='color:palette(text);text-decoration:none' href='%1'>%2</a>").arg( QString(Constants::WEBSITE) + "#download", tr("Get the full version").toUpper() )); buy->setOpenExternalLinks(true); buy->setMargin(7); buy->setAlignment(Qt::AlignRight); buy->setStyleSheet("QLabel {" "background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #CCD6E0, stop: 1 #ADBCCC);" "border-bottom-left-radius: 8px;" "border-bottom-right-radius: 8px;" "font-size: 10px;" "margin-right: 50px;" "}"); mainLayout->addWidget(buy, 0, Qt::AlignRight); #endif mainLayout->addStretch(); mainLayout->addSpacing(PADDING); QBoxLayout *hLayout = new QHBoxLayout(); hLayout->setAlignment(Qt::AlignCenter); mainLayout->addLayout(hLayout); QLabel *logo = new QLabel(this); logo->setPixmap(QPixmap(":/images/app.png")); hLayout->addWidget(logo, 0, Qt::AlignTop); hLayout->addSpacing(PADDING); QVBoxLayout *layout = new QVBoxLayout(); layout->setAlignment(Qt::AlignCenter); hLayout->addLayout(layout); QLabel *welcomeLabel = new QLabel("<h1 style='font-weight:normal'>" + tr("Welcome to <a href='%1'>%2</a>,") // .replace("<a ", "<a style='color:palette(text)'") .replace("<a href", "<a style='text-decoration:none; color:palette(text); font-weight:bold' href") .arg(Constants::WEBSITE, Constants::APP_NAME) + "</h1>", this); welcomeLabel->setOpenExternalLinks(true); layout->addWidget(welcomeLabel); layout->addSpacing(PADDING / 2); QBoxLayout *tipLayout = new QHBoxLayout(); tipLayout->setSpacing(10); //: "Enter", as in "type". The whole frase says: "Enter a keyword to start watching videos" QLabel *tipLabel = new QLabel(tr("Enter"), this); tipLabel->setFont(biggerFont); tipLayout->addWidget(tipLabel); typeCombo = new QComboBox(this); typeCombo->addItem(tr("a keyword")); typeCombo->addItem(tr("a channel")); typeCombo->setFont(biggerFont); connect(typeCombo, SIGNAL(currentIndexChanged(int)), SLOT(searchTypeChanged(int))); tipLayout->addWidget(typeCombo); tipLabel = new QLabel(tr("to start watching videos."), this); tipLabel->setFont(biggerFont); tipLayout->addWidget(tipLabel); layout->addLayout(tipLayout); layout->addSpacing(PADDING / 2); QHBoxLayout *searchLayout = new QHBoxLayout(); searchLayout->setAlignment(Qt::AlignVCenter); queryEdit = new SearchLineEdit(this); queryEdit->setFont(biggerFont); queryEdit->setMinimumWidth(queryEdit->fontInfo().pixelSize()*15); queryEdit->sizeHint(); queryEdit->setFocus(Qt::OtherFocusReason); connect(queryEdit, SIGNAL(search(const QString&)), this, SLOT(watch(const QString&))); connect(queryEdit, SIGNAL(textChanged(const QString &)), this, SLOT(textChanged(const QString &))); youtubeSuggest = new YouTubeSuggest(this); channelSuggest = new ChannelSuggest(this); searchTypeChanged(0); searchLayout->addWidget(queryEdit); searchLayout->addSpacing(10); watchButton = new QPushButton(tr("Watch"), this); watchButton->setDefault(true); watchButton->setEnabled(false); watchButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); connect(watchButton, SIGNAL(clicked()), this, SLOT(watch())); searchLayout->addWidget(watchButton); layout->addItem(searchLayout); layout->addSpacing(PADDING / 2); QHBoxLayout *otherLayout = new QHBoxLayout(); otherLayout->setMargin(0); otherLayout->setSpacing(10); recentKeywordsLayout = new QVBoxLayout(); recentKeywordsLayout->setSpacing(5); recentKeywordsLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft); recentKeywordsLabel = new QLabel(tr("Recent keywords").toUpper(), this); #if defined(APP_MAC) | defined(APP_WIN) QPalette palette = recentKeywordsLabel->palette(); palette.setColor(QPalette::WindowText, QColor(0x65, 0x71, 0x80)); recentKeywordsLabel->setPalette(palette); #else recentKeywordsLabel->setForegroundRole(QPalette::Dark); #endif recentKeywordsLabel->hide(); recentKeywordsLabel->setFont(smallerFont); recentKeywordsLayout->addWidget(recentKeywordsLabel); otherLayout->addLayout(recentKeywordsLayout); // recent channels recentChannelsLayout = new QVBoxLayout(); recentChannelsLayout->setSpacing(5); recentChannelsLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft); recentChannelsLabel = new QLabel(tr("Recent channels").toUpper(), this); #if defined(APP_MAC) | defined(APP_WIN) palette = recentChannelsLabel->palette(); palette.setColor(QPalette::WindowText, QColor(0x65, 0x71, 0x80)); recentChannelsLabel->setPalette(palette); #else recentChannelsLabel->setForegroundRole(QPalette::Dark); #endif recentChannelsLabel->hide(); recentChannelsLabel->setFont(smallerFont); recentChannelsLayout->addWidget(recentChannelsLabel); otherLayout->addLayout(recentChannelsLayout); layout->addLayout(otherLayout); mainLayout->addSpacing(PADDING); mainLayout->addStretch(); setLayout(mainLayout); updateChecker = 0; #ifndef APP_MAC_STORE checkForUpdate(); #endif }