#include "clickablelabel.h"
#include "iconutils.h"
#include "mainwindow.h"
+#include "messagebar.h"
#include "painterutils.h"
+#ifdef UPDATER
+#include "updater.h"
+#endif
+
namespace {
const QString recentKeywordsKey = "recentKeywords";
const QString recentChannelsKey = "recentChannels";
vLayout->setMargin(padding);
vLayout->setSpacing(0);
- // hidden message widget
- message = new QLabel(this);
- message->hide();
- vLayout->addWidget(message);
+ messageBar = new MessageBar();
+ messageBar->hide();
+ vLayout->addWidget(messageBar, 0, Qt::AlignCenter);
+ vLayout->addSpacing(padding);
+ maybeShowMessage();
vLayout->addStretch();
ClickableLabel *item;
if (recentKeywordsLayout->count() - 1 >= counter) {
item = qobject_cast<ClickableLabel *>(recentKeywordsLayout->itemAt(counter)->widget());
-
} else {
item = new ClickableLabel();
#ifdef APP_MAC
}
}
});
+ item->setContextMenuPolicy(Qt::ActionsContextMenu);
+ auto removeAction = new QAction(tr("Remove"));
+ item->addAction(removeAction);
+ connect(removeAction, &QAction::triggered, item, [item] {
+ QSettings settings;
+ QStringList keywords = settings.value(recentKeywordsKey).toStringList();
+ QString keyword = item->property("keyword").toString();
+ keywords.removeOne(keyword);
+ settings.setValue(recentKeywordsKey, keywords);
+ item->deleteLater();
+ });
recentKeywordsLayout->addWidget(item);
}
item->setStatusTip(link);
else
item->setStatusTip(QString());
+ item->setProperty("keyword", keyword);
disconnect(item, &ClickableLabel::clicked, nullptr, nullptr);
connect(item, &ClickableLabel::clicked, this, [this, link]() { watchKeywords(link); });
}
ClickableLabel *item = new ClickableLabel(display);
+ item->setProperty("keyword", keyword);
#ifdef APP_MAC
item->setPalette(p);
#endif
connect(item, &ClickableLabel::hovered, item, [item](bool value) {
item->setForegroundRole(value ? QPalette::Highlight : QPalette::WindowText);
});
+ item->setContextMenuPolicy(Qt::ActionsContextMenu);
+ auto removeAction = new QAction(tr("Remove"));
+ item->addAction(removeAction);
+ connect(removeAction, &QAction::triggered, item, [item] {
+ QSettings settings;
+ QStringList keywords = settings.value(recentChannelsKey).toStringList();
+ QString keyword = item->property("keyword").toString();
+ keywords.removeOne(keyword);
+ settings.setValue(recentChannelsKey, keywords);
+ item->deleteLater();
+ });
recentChannelsLayout->addWidget(item);
}
}
}
QString id = channelId;
-
- // Fix old settings
- const QLatin1String uc("UC");
- if (!id.startsWith(uc)) id = uc + id;
-
+ qDebug() << "Channel" << id;
SearchParams *searchParams = new SearchParams();
searchParams->setChannelId(id);
searchParams->setSortBy(SearchParams::SortByNewest);
void SearchView::onChannelSuggestions(const QVector<Suggestion *> &suggestions) {
lastChannelSuggestions = suggestions;
}
+
+void SearchView::maybeShowMessage() {
+ QSettings settings;
+ QString key;
+
+ bool showMessages = true;
+#ifdef APP_ACTIVATION
+ showMessages = Activation::instance().isActivated();
+#endif
+
+#if defined APP_MAC && !defined APP_MAC_STORE
+ if (showMessages && !settings.contains(key = "sofa")) {
+ QString msg = tr("Need a remote control for %1? Try %2!").arg(Constants::NAME).arg("Sofa");
+ msg = "<a href='https://" + QLatin1String(Constants::ORG_DOMAIN) + '/' + key +
+ "' style='text-decoration:none;color:palette(windowText)'>" + msg + "</a>";
+ messageBar->setMessage(msg);
+ messageBar->setOpenExternalLinks(true);
+ disconnect(messageBar);
+ connect(messageBar, &MessageBar::closed, this, [key] {
+ QSettings settings;
+ settings.setValue(key, true);
+ });
+ messageBar->show();
+ showMessages = false;
+ }
+#endif
+
+ if (showMessages) {
+ key = "donate" + QLatin1String(Constants::VERSION);
+ if (!settings.contains(key)) {
+ bool oneYearUsage = true;
+#ifdef APP_ACTIVATION
+ oneYearUsage = (QDateTime::currentSecsSinceEpoch() -
+ Activation::instance().getLicenseTimestamp()) > 86400 * 365;
+#elif APP_MAC_STORE
+ oneYearUsage = false;
+#endif
+ if (oneYearUsage) {
+ QString msg =
+ tr("I keep improving %1 to make it the best I can. Support this work!")
+ .arg(Constants::NAME);
+ msg = "<a href='https://" + QLatin1String(Constants::ORG_DOMAIN) + "/donate" +
+ "' style='text-decoration:none;color:palette(windowText)'>" + msg + "</a>";
+ messageBar->setMessage(msg);
+ messageBar->setOpenExternalLinks(true);
+ disconnect(messageBar);
+ connect(messageBar, &MessageBar::closed, this, [key] {
+ QSettings settings;
+ settings.setValue(key, true);
+ });
+ messageBar->show();
+ }
+ }
+ }
+
+#ifdef UPDATER
+ connect(&Updater::instance(), &Updater::statusChanged, this, [this](auto status) {
+ if (status == Updater::Status::UpdateDownloaded) {
+ QString msg = tr("An update is ready to be installed. Quit and install update.");
+ msg = "<a href='http://quit' style='text-decoration:none;color:palette(windowText)'>" +
+ msg + "</a>";
+ messageBar->setMessage(msg);
+ messageBar->setOpenExternalLinks(false);
+ disconnect(messageBar);
+ connect(messageBar, &MessageBar::linkActivated, this, [] {
+ Updater::instance().setRelaunchAfterInstall(true);
+ qApp->quit();
+ });
+ messageBar->show();
+ }
+ });
+#endif
+}