From 1e2e459c6e29ce467f14c1b42be5479c42290771 Mon Sep 17 00:00:00 2001
From: Flavio
Date: Tue, 11 Dec 2012 09:53:33 +0100
Subject: [PATCH] Activation
---
src/AboutView.cpp | 74 ++++++++++--------
src/AboutView.h | 9 +--
src/MainWindow.cpp | 165 ++++++++++++++++++++++------------------
src/MainWindow.h | 14 +++-
src/MediaView.cpp | 41 +++++-----
src/MediaView.h | 4 +-
src/SearchView.cpp | 37 +++------
src/downloadmanager.cpp | 50 +++++++-----
src/updatechecker.cpp | 9 ++-
9 files changed, 211 insertions(+), 192 deletions(-)
diff --git a/src/AboutView.cpp b/src/AboutView.cpp
index 868c018..8cbfad7 100644
--- a/src/AboutView.cpp
+++ b/src/AboutView.cpp
@@ -3,50 +3,59 @@
#ifndef Q_WS_X11
#include "extra.h"
#endif
+#ifdef APP_ACTIVATION
+#include "activation.h"
+#endif
+#ifdef APP_MAC
+#include "macutils.h"
+#include "mac_startup.h"
+#endif
AboutView::AboutView(QWidget *parent) : QWidget(parent) {
- QBoxLayout *aboutlayout = new QHBoxLayout(this);
- aboutlayout->setAlignment(Qt::AlignCenter);
- aboutlayout->setMargin(30);
- aboutlayout->setSpacing(30);
+ QBoxLayout *hLayout = new QHBoxLayout(this);
+ hLayout->setAlignment(Qt::AlignCenter);
+ hLayout->setMargin(30);
+ hLayout->setSpacing(30);
QLabel *logo = new QLabel(this);
- QString resource = "app";
-#ifndef Q_WS_X11
- resource = Extra::resourceName(resource);
-#endif
- logo->setPixmap(QPixmap(":/images/" + resource + ".png"));
- aboutlayout->addWidget(logo, 0, Qt::AlignTop);
+ logo->setPixmap(QPixmap(":/images/app.png"));
+ hLayout->addWidget(logo, 0, Qt::AlignTop);
QBoxLayout *layout = new QVBoxLayout();
layout->setAlignment(Qt::AlignCenter);
layout->setSpacing(30);
- aboutlayout->addLayout(layout);
+ hLayout->addLayout(layout);
- QString info = "" + QString(Constants::NAME) + "
"
+ QString info = ""
+ "" + QString(Constants::NAME) + "
"
"" + tr("There's life outside the browser!") + "
"
"" + tr("Version %1").arg(Constants::VERSION) + "
"
- + QString("%1
").arg(Constants::WEBSITE) +
+ + QString("%1
").arg(Constants::WEBSITE);
- #if !defined(APP_MAC) && !defined(APP_WIN)
- "" + tr("%1 is Free Software but its development takes precious time.").arg(Constants::NAME) + "
"
+#ifdef APP_ACTIVATION
+ if (Activation::instance().isActivated())
+ info += "
" + tr("Licensed to: %1").arg("" + Activation::instance().getEmail() + "");
+#endif
+
+#ifdef Q_WS_X11
+ info += "
" + tr("%1 is Free Software but its development takes precious time.").arg(Constants::NAME) + "
"
+ tr("Please donate to support the continued development of %2.")
- .arg(QString(Constants::WEBSITE).append("#donate"), Constants::NAME) + "
"
- #endif
+ .arg(QString(Constants::WEBSITE).append("#donate"), Constants::NAME) + "
";
+#endif
- "" + tr("You may want to try my other apps as well:") + "
"
- + ""
"" + tr("Translate %1 to your native language using %2").arg(Constants::NAME)
.arg("Transifex")
@@ -56,7 +65,7 @@ AboutView::AboutView(QWidget *parent) : QWidget(parent) {
+ tr("Icon designed by %1.").arg("David Nel")
+ "
"
- #if !defined(APP_MAC) && !defined(APP_WIN)
+ #ifdef Q_WS_X11
"" + tr("Released under the GNU General Public License")
.arg("http://www.gnu.org/licenses/gpl.html") + "
"
#endif
@@ -68,6 +77,8 @@ AboutView::AboutView(QWidget *parent) : QWidget(parent) {
layout->addWidget(infoLabel);
QLayout *buttonLayout = new QHBoxLayout();
+ buttonLayout->setMargin(0);
+ buttonLayout->setSpacing(0);
buttonLayout->setAlignment(Qt::AlignLeft);
QPushButton *closeButton = new QPushButton(tr("&Close"), this);
@@ -77,15 +88,7 @@ AboutView::AboutView(QWidget *parent) : QWidget(parent) {
connect(closeButton, SIGNAL(clicked()), parent, SLOT(goBack()));
buttonLayout->addWidget(closeButton);
- /*
- QPushButton *issueButton = new QPushButton(tr("&Report an issue"), this);
- issueButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
- connect(issueButton, SIGNAL(clicked()), window(), SLOT(reportIssue()));
- buttonLayout->addWidget(issueButton);
- */
-
layout->addLayout(buttonLayout);
-
}
void AboutView::paintEvent(QPaintEvent * /*event*/) {
@@ -100,3 +103,12 @@ void AboutView::paintEvent(QPaintEvent * /*event*/) {
painter.fillRect(0, 0, width(), height(), brush);
#endif
}
+
+void AboutView::appear() {
+#ifdef APP_MAC
+ mac::uncloseWindow(window()->winId());
+#ifdef APP_ACTIVATION
+ mac::CheckForUpdates();
+#endif
+#endif
+}
diff --git a/src/AboutView.h b/src/AboutView.h
index 2d3e0c4..e1977dd 100644
--- a/src/AboutView.h
+++ b/src/AboutView.h
@@ -4,9 +4,6 @@
#include
#include "View.h"
#include "constants.h"
-#ifdef APP_MAC
-#include "macutils.h"
-#endif
class AboutView : public QWidget, public View {
@@ -14,11 +11,7 @@ class AboutView : public QWidget, public View {
public:
AboutView(QWidget *parent);
- void appear() {
-#ifdef APP_MAC
- mac::uncloseWindow(window()->winId());
-#endif
- }
+ void appear();
void disappear() {}
QMap metadata() {
QMap metadata;
diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index e5d78d2..b0e184e 100644
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -15,15 +15,9 @@
#include "macsupport.h"
#include "macutils.h"
#endif
-#ifndef Q_WS_X11
-#include "extra.h"
-#endif
#include "downloadmanager.h"
#include "youtubesuggest.h"
#include "updatechecker.h"
-#ifdef APP_DEMO
-#include "demostartupview.h"
-#endif
#include "temporary.h"
#ifdef APP_MAC
#include "searchlineedit_mac.h"
@@ -31,6 +25,15 @@
#include "searchlineedit.h"
#endif
#include
+#ifndef Q_WS_X11
+#include "extra.h"
+#include "updatedialog.h"
+#endif
+#ifdef APP_ACTIVATION
+#include "activation.h"
+#include "activationview.h"
+#include "activationdialog.h"
+#endif
static MainWindow *singleton = 0;
@@ -52,7 +55,6 @@ MainWindow::MainWindow() :
// views mechanism
history = new QStack();
views = new QStackedWidget(this);
- setCentralWidget(views);
// views
searchView = new SearchView(this);
@@ -95,14 +97,15 @@ MainWindow::MainWindow() :
setMinimumWidth(0);
// show the initial view
-#ifdef APP_DEMO
- QWidget *demoStartupView = new DemoStartupView(this);
- views->addWidget(demoStartupView);
- showWidget(demoStartupView);
-#else
- showSearch();
+ showSearch(false);
+
+#ifdef APP_ACTIVATION
+ if (!Activation::instance().isActivated())
+ showActivationView(false);
#endif
+ setCentralWidget(views);
+
// Global shortcuts
GlobalShortcuts &shortcuts = GlobalShortcuts::instance();
#ifdef Q_WS_X11
@@ -473,6 +476,10 @@ void MainWindow::createActions() {
action->setCheckable(true);
actions->insert("refine-search", action);
+#ifdef APP_ACTIVATION
+ Extra::createActivationAction(tr("Buy %1...").arg(Constants::NAME));
+#endif
+
// common action properties
foreach (QAction *action, actions->values()) {
@@ -491,10 +498,6 @@ void MainWindow::createActions() {
// show keyboard shortcuts in the status bar
if (!action->shortcut().isEmpty())
action->setStatusTip(action->statusTip() + " (" + action->shortcut().toString(QKeySequence::NativeText) + ")");
-
- // no icons in menus
- action->setIconVisibleInMenu(false);
-
}
}
@@ -504,11 +507,12 @@ void MainWindow::createMenus() {
QMap *menus = The::globalMenus();
fileMenu = menuBar()->addMenu(tr("&Application"));
-#ifdef APP_DEMO
- QAction* action = new QAction(tr("Buy %1...").arg(Constants::NAME), this);
- action->setMenuRole(QAction::ApplicationSpecificRole);
- connect(action, SIGNAL(triggered()), SLOT(buy()));
- fileMenu->addAction(action);
+#ifdef APP_ACTIVATION
+ QAction *buyAction = The::globalActions()->value("buy");
+ if (buyAction) fileMenu->addAction(buyAction);
+#ifndef APP_MAC
+ fileMenu->addSeparator();
+#endif
#endif
fileMenu->addAction(clearAct);
#ifndef APP_MAC
@@ -740,7 +744,7 @@ void MainWindow::goBack() {
}
}
-void MainWindow::showWidget ( QWidget* widget ) {
+void MainWindow::showWidget(QWidget* widget, bool transition) {
if (compactViewAct->isChecked())
compactViewAct->toggle();
@@ -752,7 +756,7 @@ void MainWindow::showWidget ( QWidget* widget ) {
if (oldView) {
oldView->disappear();
views->currentWidget()->setEnabled(false);
- }
+ } else qDebug() << "Cannot cast view";
// call show method on the new view
View* newView = dynamic_cast (widget);
@@ -767,13 +771,15 @@ void MainWindow::showWidget ( QWidget* widget ) {
statusBar()->showMessage((metadata.value("description").toString()));
}
- stopAct->setEnabled(widget == mediaView);
- compactViewAct->setEnabled(widget == mediaView);
- webPageAct->setEnabled(widget == mediaView);
- copyPageAct->setEnabled(widget == mediaView);
- copyLinkAct->setEnabled(widget == mediaView);
- findVideoPartsAct->setEnabled(widget == mediaView);
- toolbarSearch->setEnabled(widget == searchView || widget == mediaView || widget == downloadView);
+ const bool isMediaView = widget == mediaView;
+
+ stopAct->setEnabled(isMediaView);
+ compactViewAct->setEnabled(isMediaView);
+ webPageAct->setEnabled(isMediaView);
+ copyPageAct->setEnabled(isMediaView);
+ copyLinkAct->setEnabled(isMediaView);
+ findVideoPartsAct->setEnabled(isMediaView);
+ toolbarSearch->setEnabled(widget == searchView || isMediaView || widget == downloadView);
if (widget == searchView) {
skipAct->setEnabled(false);
@@ -782,20 +788,14 @@ void MainWindow::showWidget ( QWidget* widget ) {
The::globalActions()->value("stopafterthis")->setEnabled(false);
}
- The::globalActions()->value("twitter")->setEnabled(widget == mediaView);
- The::globalActions()->value("facebook")->setEnabled(widget == mediaView);
- The::globalActions()->value("buffer")->setEnabled(widget == mediaView);
- The::globalActions()->value("email")->setEnabled(widget == mediaView);
+ The::globalActions()->value("twitter")->setEnabled(isMediaView);
+ The::globalActions()->value("facebook")->setEnabled(isMediaView);
+ The::globalActions()->value("buffer")->setEnabled(isMediaView);
+ The::globalActions()->value("email")->setEnabled(isMediaView);
aboutAct->setEnabled(widget != aboutView);
The::globalActions()->value("downloads")->setChecked(widget == downloadView);
- // toolbar only for the mediaView
- /* mainToolBar->setVisible(
- (widget == mediaView && !compactViewAct->isChecked())
- || widget == downloadView
- ); */
-
setUpdatesEnabled(true);
QWidget *oldWidget = views->currentWidget();
@@ -804,10 +804,9 @@ void MainWindow::showWidget ( QWidget* widget ) {
views->setCurrentWidget(widget);
widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- // adjustSize();
#ifndef Q_WS_X11
- Extra::fadeInWidget(oldWidget, widget);
+ if (transition) Extra::fadeInWidget(oldWidget, widget);
#endif
history->push(widget);
@@ -888,8 +887,8 @@ bool MainWindow::confirmQuit() {
return true;
}
-void MainWindow::showSearch() {
- showWidget(searchView);
+void MainWindow::showSearch(bool transition) {
+ showWidget(searchView, transition);
currentTime->clear();
totalTime->clear();
}
@@ -1373,7 +1372,6 @@ void MainWindow::checkForUpdate() {
this, SLOT(gotNewVersion(QString)));
updateChecker->checkForUpdate();
settings.setValue(updateCheckKey, unixTime);
-
}
void MainWindow::gotNewVersion(QString version) {
@@ -1382,47 +1380,36 @@ void MainWindow::gotNewVersion(QString version) {
updateChecker = 0;
}
-#if defined(APP_DEMO) || defined(APP_MAC_STORE) || defined(APP_USC)
- return;
-#endif
-
QSettings settings;
QString checkedVersion = settings.value("checkedVersion").toString();
if (checkedVersion == version) return;
+#ifdef APP_SIMPLEUPDATE
+ simpleUpdateDialog(version);
+#endif
+#if defined(APP_ACTIVATION) && !defined(APP_MAC)
+ UpdateDialog *dialog = new UpdateDialog(version, this);
+ dialog->show();
+#endif
+}
+
+void MainWindow::simpleUpdateDialog(QString version) {
QMessageBox msgBox(this);
- msgBox.setIconPixmap(QPixmap(":/images/app.png").scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation));
+ msgBox.setIconPixmap(
+ QPixmap(":/images/app.png")
+ .scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation));
msgBox.setText(tr("%1 version %2 is now available.").arg(Constants::NAME, version));
-
msgBox.setModal(true);
- // make it a "sheet" on the Mac
msgBox.setWindowModality(Qt::WindowModal);
-
- QPushButton* laterButton = 0;
- QPushButton* updateButton = 0;
-
-#if defined(APP_MAC) || defined(APP_WIN)
- msgBox.setInformativeText(
- tr("To get the updated version, download %1 again from the link you received via email and reinstall.")
- .arg(Constants::NAME)
- );
- laterButton = msgBox.addButton(tr("Remind me later"), QMessageBox::RejectRole);
- msgBox.addButton(QMessageBox::Ok);
-#else
msgBox.addButton(QMessageBox::Close);
- updateButton = msgBox.addButton(tr("Update"), QMessageBox::AcceptRole);
-#endif
-
+ QPushButton* laterButton = msgBox.addButton(tr("Remind me later"), QMessageBox::RejectRole);
+ QPushButton* updateButton = msgBox.addButton(tr("Update"), QMessageBox::AcceptRole);
msgBox.exec();
-
if (msgBox.clickedButton() != laterButton) {
+ QSettings settings;
settings.setValue("checkedVersion", version);
}
-
- if (updateButton && msgBox.clickedButton() == updateButton) {
- QDesktopServices::openUrl(QUrl(QLatin1String(Constants::WEBSITE) + "#download"));
- }
-
+ if (msgBox.clickedButton() == updateButton) visitSite();
}
void MainWindow::floatOnTop(bool onTop) {
@@ -1482,3 +1469,33 @@ void MainWindow::printHelp() {
msg += "Go back to the previous video.\n";
std::cout << msg.toLocal8Bit().data();
}
+
+void MainWindow::showMessage(QString message) {
+ statusBar()->showMessage(message, 60000);
+}
+
+#ifdef APP_ACTIVATION
+void MainWindow::showActivationView(bool transition) {
+ QWidget *activationView = ActivationView::instance();
+ if (views->currentWidget() == activationView) {
+ buy();
+ return;
+ }
+ views->addWidget(activationView);
+ showWidget(activationView, transition);
+}
+
+void MainWindow::showActivationDialog() {
+ QTimer::singleShot(0, new ActivationDialog(this), SLOT(show()));
+}
+
+void MainWindow::buy() {
+ Extra::buy();
+}
+
+void MainWindow::hideBuyAction() {
+ QAction *action = The::globalActions()->value("buy");
+ action->setVisible(false);
+ action->setEnabled(false);
+}
+#endif
diff --git a/src/MainWindow.h b/src/MainWindow.h
index ee21703..b0b3b74 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -34,6 +34,14 @@ public slots:
void messageReceived(const QString &message);
void quit();
void startToolbarSearch(QString query);
+ void goBack();
+ void showMessage(QString message);
+#ifdef APP_ACTIVATION
+ void showActivationView(bool transition = true);
+ void showActivationDialog();
+ void buy();
+ void hideBuyAction();
+#endif
protected:
void changeEvent(QEvent *);
@@ -46,8 +54,7 @@ protected:
private slots:
void checkForUpdate();
void gotNewVersion(QString version);
- void goBack();
- void showSearch();
+ void showSearch(bool transition = true);
void visitSite();
void donate();
void reportIssue();
@@ -92,9 +99,10 @@ private:
void createMenus();
void createToolBars();
void createStatusBar();
- void showWidget(QWidget*);
+ void showWidget(QWidget*, bool transition = true);
static QString formatTime(qint64 time);
bool confirmQuit();
+ void simpleUpdateDialog(QString version);
UpdateChecker *updateChecker;
diff --git a/src/MediaView.cpp b/src/MediaView.cpp
index 012266c..1b0dce1 100644
--- a/src/MediaView.cpp
+++ b/src/MediaView.cpp
@@ -16,6 +16,9 @@
#ifdef APP_MAC
#include "macfullscreen.h"
#endif
+#ifdef APP_ACTIVATION
+#include "activation.h"
+#endif
namespace The {
NetworkAccess* http();
@@ -81,7 +84,7 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) {
splitter->addWidget(sidebar);
videoAreaWidget = new VideoAreaWidget(this);
- // videoAreaWidget->setMinimumSize(320,240);
+ videoAreaWidget->setMinimumSize(320,240);
videoWidget = new Phonon::VideoWidget(this);
videoAreaWidget->setVideoWidget(videoWidget);
videoAreaWidget->setListModel(listModel);
@@ -111,7 +114,7 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) {
workaroundTimer->setInterval(3000);
connect(workaroundTimer, SIGNAL(timeout()), SLOT(timerPlay()));
-#ifdef APP_DEMO
+#ifdef APP_ACTIVATION
demoTimer = new QTimer(this);
demoTimer->setSingleShot(true);
connect(demoTimer, SIGNAL(timeout()), SLOT(demoMessage()));
@@ -148,7 +151,7 @@ void MediaView::setMediaObject(Phonon::MediaObject *mediaObject) {
void MediaView::search(SearchParams *searchParams) {
reallyStopped = false;
-#ifdef APP_DEMO
+#ifdef APP_ACTIVATION
demoTimer->stop();
#endif
workaroundTimer->stop();
@@ -313,9 +316,7 @@ void MediaView::activeRowChanged(int row) {
timerPlayFlag = false;
// video title in the statusbar
- QMainWindow* mainWindow = dynamic_cast(window());
- if (mainWindow) mainWindow->statusBar()->showMessage(video->title());
-
+ MainWindow::instance()->showMessage(video->title());
// ensure active item is visible
// int row = listModel->activeRow();
@@ -439,8 +440,9 @@ void MediaView::startPlaying() {
listView->scrollTo(index, QAbstractItemView::EnsureVisible);
}
-#ifdef APP_DEMO
- demoTimer->start(60000);
+#ifdef APP_ACTIVATION
+ if (!Activation::instance().isActivated())
+ demoTimer->start(180000);
#endif
}
@@ -539,9 +541,8 @@ void MediaView::copyWebPage() {
if (!video) return;
QString address = video->webpage().toString();
QApplication::clipboard()->setText(address);
- QMainWindow* mainWindow = dynamic_cast(window());
QString message = tr("You can now paste the YouTube link into another application");
- if (mainWindow) mainWindow->statusBar()->showMessage(message);
+ MainWindow::instance()->showMessage(message);
}
void MediaView::copyVideoLink() {
@@ -550,8 +551,7 @@ void MediaView::copyVideoLink() {
QApplication::clipboard()->setText(video->getStreamUrl().toEncoded());
QString message = tr("You can now paste the video stream URL into another application")
+ ". " + tr("The link will be valid only for a limited time.");
- QMainWindow* mainWindow = dynamic_cast(window());
- if (mainWindow) mainWindow->statusBar()->showMessage(message);
+ MainWindow::instance()->showMessage(message);
}
void MediaView::removeSelected() {
@@ -644,7 +644,7 @@ void MediaView::saveSplitterState() {
settings.setValue("splitter", splitter->saveState());
}
-#ifdef APP_DEMO
+#ifdef APP_ACTIVATION
static QPushButton *continueButton;
@@ -673,7 +673,7 @@ void MediaView::demoMessage() {
msgBox.exec();
if (msgBox.clickedButton() == buyButton) {
- QDesktopServices::openUrl(QUrl(QString(Constants::WEBSITE) + "#download"));
+ MainWindow::instance()->showActivationView();
} else {
mediaObject->play();
demoTimer->start(600000);
@@ -697,18 +697,10 @@ void MediaView::updateContinueButton(int value) {
void MediaView::downloadVideo() {
Video* video = listModel->activeVideo();
if (!video) return;
-
DownloadManager::instance()->addItem(video);
-
- // TODO animate
-
The::globalActions()->value("downloads")->setVisible(true);
-
- // The::globalActions()->value("download")->setEnabled(DownloadManager::instance()->itemForVideo(video) == 0);
-
- QMainWindow* mainWindow = dynamic_cast(window());
QString message = tr("Downloading %1").arg(video->title());
- if (mainWindow) mainWindow->statusBar()->showMessage(message);
+ MainWindow::instance()->showMessage(message);
}
void MediaView::snapshot() {
@@ -877,7 +869,8 @@ void MediaView::authorPushed(QModelIndex index) {
Video* video = listModel->videoAt(index.row());
if (!video) return;
- QString channel = video->author();
+ QString channel = video->authorUri();
+ if (channel.isEmpty()) channel = video->author();
if (channel.isEmpty()) return;
SearchParams *searchParams = new SearchParams();
diff --git a/src/MediaView.h b/src/MediaView.h
index 9d30c50..54a2803 100644
--- a/src/MediaView.h
+++ b/src/MediaView.h
@@ -87,7 +87,7 @@ private slots:
void searchMostViewed();
// timer
void timerPlay();
-#ifdef APP_DEMO
+#ifdef APP_ACTIVATION
void demoMessage();
void updateContinueButton(int);
#endif
@@ -137,7 +137,7 @@ private:
QTimer *workaroundTimer;
Video *skippedVideo;
-#ifdef APP_DEMO
+#ifdef APP_ACTIVATION
QTimer *demoTimer;
#endif
diff --git a/src/SearchView.cpp b/src/SearchView.cpp
index 723ad72..89dc98a 100644
--- a/src/SearchView.cpp
+++ b/src/SearchView.cpp
@@ -12,9 +12,13 @@
#ifndef Q_WS_X11
#include "extra.h"
#endif
+#ifdef APP_ACTIVATION
+#include "activation.h"
+#endif
+#include "MainWindow.h"
namespace The {
- QMap* globalActions();
+QMap* globalActions();
}
static const QString recentKeywordsKey = "recentKeywords";
@@ -41,24 +45,9 @@ SearchView::SearchView(QWidget *parent) : QWidget(parent) {
message->hide();
mainLayout->addWidget(message);
-#ifdef APP_DEMO
- QLabel *buy = new QLabel(this);
- buy->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
- buy->setText(QString("%2").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);
+#ifdef APP_ACTIVATION
+ if (!Activation::instance().isActivated())
+ mainLayout->addWidget(Extra::buyButton(tr("Get the full version")), 0, Qt::AlignCenter);
#endif
mainLayout->addStretch();
@@ -69,13 +58,7 @@ SearchView::SearchView(QWidget *parent) : QWidget(parent) {
mainLayout->addLayout(hLayout);
QLabel *logo = new QLabel(this);
- QString resource = "app";
-#ifndef Q_WS_X11
- resource = Extra::resourceName(resource);
- logo->setMaximumSize(128, 128);
- logo->setScaledContents(true);
-#endif
- logo->setPixmap(QPixmap(":/images/" + resource + ".png"));
+ logo->setPixmap(QPixmap(":/images/app.png"));
hLayout->addWidget(logo, 0, Qt::AlignTop);
hLayout->addSpacing(PADDING);
@@ -98,7 +81,7 @@ SearchView::SearchView(QWidget *parent) : QWidget(parent) {
QBoxLayout *tipLayout = new QHBoxLayout();
tipLayout->setSpacing(10);
- //: "Enter", as in "type". The whole frase says: "Enter a keyword to start watching videos"
+ //: "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
QLabel *tipLabel = new QLabel(tr("Enter"), this);
tipLabel->setFont(biggerFont);
tipLayout->addWidget(tipLabel);
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index ee597d8..b06b3ec 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -4,6 +4,12 @@
#include "video.h"
#include "constants.h"
#include "MainWindow.h"
+#ifdef APP_ACTIVATION
+#include "activation.h"
+#endif
+#ifdef Q_WS_MAC
+#include "macutils.h"
+#endif
static DownloadManager *downloadManagerInstance = 0;
@@ -41,28 +47,30 @@ DownloadItem* DownloadManager::itemForVideo(Video* video) {
void DownloadManager::addItem(Video *video) {
// qDebug() << __FUNCTION__ << video->title();
-#ifdef APP_DEMO
- if (video->duration() >= 60*4) {
- QMessageBox msgBox(MainWindow::instance());
- msgBox.setIconPixmap(QPixmap(":/images/app.png").scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation));
- msgBox.setText(tr("This is just the demo version of %1.").arg(Constants::NAME));
- msgBox.setInformativeText(
- tr("It can only download videos shorter than %1 minutes so you can test the download functionality.")
- .arg(4));
- msgBox.setModal(true);
- // make it a "sheet" on the Mac
- msgBox.setWindowModality(Qt::WindowModal);
-
- msgBox.addButton(tr("Continue"), QMessageBox::RejectRole);
- QPushButton *buyButton = msgBox.addButton(tr("Get the full version"), QMessageBox::ActionRole);
-
- msgBox.exec();
-
- if (msgBox.clickedButton() == buyButton) {
- QDesktopServices::openUrl(QUrl(QString(Constants::WEBSITE) + "#download"));
- }
+#ifdef APP_ACTIVATION
+ if (!Activation::instance().isActivated()) {
+ if (video->duration() >= 60*4) {
+ QMessageBox msgBox(MainWindow::instance());
+ msgBox.setIconPixmap(QPixmap(":/images/app.png").scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation));
+ msgBox.setText(tr("This is just the demo version of %1.").arg(Constants::NAME));
+ msgBox.setInformativeText(
+ tr("It can only download videos shorter than %1 minutes so you can test the download functionality.")
+ .arg(4));
+ msgBox.setModal(true);
+ // make it a "sheet" on the Mac
+ msgBox.setWindowModality(Qt::WindowModal);
- return;
+ msgBox.addButton(tr("Continue"), QMessageBox::RejectRole);
+ QPushButton *buyButton = msgBox.addButton(tr("Get the full version"), QMessageBox::ActionRole);
+
+ msgBox.exec();
+
+ if (msgBox.clickedButton() == buyButton) {
+ MainWindow::instance()->showActivationView();
+ }
+
+ return;
+ }
}
#endif
diff --git a/src/updatechecker.cpp b/src/updatechecker.cpp
index da60d8f..c98a836 100644
--- a/src/updatechecker.cpp
+++ b/src/updatechecker.cpp
@@ -1,6 +1,9 @@
#include "updatechecker.h"
#include "networkaccess.h"
#include "constants.h"
+#ifdef APP_ACTIVATION
+#include "activation.h"
+#endif
namespace The {
NetworkAccess* http();
@@ -20,8 +23,10 @@ void UpdateChecker::checkForUpdate() {
#ifdef APP_WIN
updateUrl.addQueryItem("os", "win");
#endif
-#ifdef APP_DEMO
- updateUrl.addQueryItem("t", "demo");
+#ifdef APP_ACTIVATION
+ QString t = "demo";
+ if (Activation::instance().isActivated()) t = "active";
+ updateUrl.addQueryItem("t", t);
#endif
#ifdef APP_MAC_STORE
updateUrl.addQueryItem("store", "mac");
--
2.39.5