#include "clickablelabel.h"
#include "iconutils.h"
#include "mainwindow.h"
+#include "messagebar.h"
#include "painterutils.h"
namespace {
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);
}
}
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);
+ 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;
+#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);
+ connect(messageBar, &MessageBar::closed, this, [key] {
+ QSettings settings;
+ settings.setValue(key, true);
+ });
+ messageBar->show();
+ }
+ }
+ }
+}