mirror-chatterino2/src/widgets/settingspages/HighlightingPage.cpp

112 lines
4.5 KiB
C++
Raw Normal View History

2018-01-12 23:09:05 +01:00
#include "highlightingpage.hpp"
#include "application.hpp"
#include "controllers/highlights/highlightcontroller.hpp"
#include "controllers/highlights/highlightmodel.hpp"
#include "debug/log.hpp"
#include "singletons/settingsmanager.hpp"
#include "util/layoutcreator.hpp"
#include "util/standarditemhelper.hpp"
#include "widgets/helper/editablemodelview.hpp"
2018-01-13 02:00:02 +01:00
#include <QFileDialog>
2018-06-21 13:02:34 +02:00
#include <QHeaderView>
2018-01-13 02:00:02 +01:00
#include <QListWidget>
#include <QPushButton>
2018-04-26 20:58:32 +02:00
#include <QStandardItemModel>
2018-01-13 02:00:02 +01:00
#include <QTabWidget>
#include <QTableView>
2018-01-13 02:00:02 +01:00
#include <QTextEdit>
#define ENABLE_HIGHLIGHTS "Enable Highlighting"
#define HIGHLIGHT_MSG "Highlight messages containing your name"
#define PLAY_SOUND "Play sound when your name is mentioned"
#define FLASH_TASKBAR "Flash taskbar when your name is mentioned"
#define ALWAYS_PLAY "Always play highlight sound (Even if Chatterino is focused)"
2018-01-12 23:09:05 +01:00
namespace chatterino {
namespace widgets {
namespace settingspages {
2018-01-12 23:09:05 +01:00
HighlightingPage::HighlightingPage()
: SettingsPage("Highlights", ":/images/notifications.svg")
2018-01-12 23:09:05 +01:00
{
auto app = getApp();
2018-01-13 02:00:02 +01:00
util::LayoutCreator<HighlightingPage> layoutCreator(this);
auto layout = layoutCreator.emplace<QVBoxLayout>().withoutMargin();
{
// GENERAL
// layout.append(this->createCheckBox(ENABLE_HIGHLIGHTS, app->settings->enableHighlights));
2018-01-13 02:00:02 +01:00
// TABS
auto tabs = layout.emplace<QTabWidget>();
{
// HIGHLIGHTS
auto highlights = tabs.appendTab(new QVBoxLayout, "Highlights");
{
helper::EditableModelView *view =
highlights
.emplace<helper::EditableModelView>(app->highlights->createModel(nullptr))
.getElement();
view->setTitles({"Pattern", "Flash taskbar", "Play sound", "Regex"});
view->getTableView()->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
view->getTableView()->horizontalHeader()->setSectionResizeMode(
0, QHeaderView::Stretch);
2018-04-25 20:35:32 +02:00
// fourtf: make class extrend BaseWidget and add this to dpiChanged
QTimer::singleShot(1, [view] {
view->getTableView()->resizeColumnsToContents();
2018-05-06 12:52:47 +02:00
view->getTableView()->setColumnWidth(0, 200);
2018-04-25 20:35:32 +02:00
});
2018-01-13 02:00:02 +01:00
view->addButtonPressed.connect([] {
getApp()->highlights->phrases.appendItem(
controllers::highlights::HighlightPhrase{"my phrase", true, false, false});
2018-04-26 20:58:32 +02:00
});
2018-01-13 02:00:02 +01:00
}
auto disabledUsers = tabs.appendTab(new QVBoxLayout, "Disabled Users");
{
auto text = disabledUsers.emplace<QTextEdit>().getElement();
QObject::connect(text, &QTextEdit::textChanged, this,
[this] { this->disabledUsersChangedTimer.start(200); });
QObject::connect(
&this->disabledUsersChangedTimer, &QTimer::timeout, this, [text, app]() {
2018-01-13 02:00:02 +01:00
QStringList list = text->toPlainText().split("\n", QString::SkipEmptyParts);
list.removeDuplicates();
app->settings->highlightUserBlacklist = list.join("\n") + "\n";
2018-01-13 02:00:02 +01:00
});
app->settings->highlightUserBlacklist.connect([=](const QString &str, auto) {
2018-01-13 02:00:02 +01:00
text->setPlainText(str); //
});
}
}
2018-04-26 23:07:02 +02:00
// MISC
auto customSound = layout.emplace<QHBoxLayout>().withoutMargin();
{
customSound.append(
this->createCheckBox("Custom sound", app->settings->customHighlightSound));
2018-04-26 23:07:02 +02:00
auto selectFile = customSound.emplace<QPushButton>("Select custom sound file");
QObject::connect(selectFile.getElement(), &QPushButton::clicked, this, [this, app] {
auto fileName = QFileDialog::getOpenFileName(this, tr("Open Sound"), "",
tr("Audio Files (*.mp3 *.wav)"));
app->settings->pathHighlightSound = fileName;
});
2018-04-26 23:07:02 +02:00
}
layout.append(createCheckBox(ALWAYS_PLAY, app->settings->highlightAlwaysPlaySound));
2018-01-13 02:00:02 +01:00
}
// ---- misc
this->disabledUsersChangedTimer.setSingleShot(true);
}
2018-01-12 23:09:05 +01:00
} // namespace settingspages
} // namespace widgets
} // namespace chatterino