Added Highlights (#86)

Added Highlights
This commit is contained in:
Cranken
2017-07-31 00:37:22 +02:00
committed by pajlada
parent 467ca90fd8
commit 8fb0671834
17 changed files with 245 additions and 12 deletions
+129
View File
@@ -11,10 +11,12 @@
#include <QFile>
#include <QFontDialog>
#include <QFormLayout>
#include <QFileDialog>
#include <QGroupBox>
#include <QLabel>
#include <QListWidget>
#include <QPalette>
#include <QTextEdit>
#include <QResource>
namespace chatterino {
@@ -106,6 +108,23 @@ void SettingsDialog::addTabs()
listWidget->addItem(user.getUserName());
}
if(listWidget->count()){
int itemIndex = 0;
for(; itemIndex < listWidget->count(); ++itemIndex){
if(listWidget->item(itemIndex)->text().compare(settings.selectedUser.get(),Qt::CaseInsensitive)){
++itemIndex;
break;
}
}
listWidget->setCurrentRow(itemIndex);
}
QObject::connect(listWidget,&QListWidget::clicked,this,[&,listWidget]{
if(!listWidget->selectedItems().isEmpty()){
settings.selectedUser.set(listWidget->currentItem()->text());
}
});
vbox->addWidget(listWidget);
}
@@ -347,6 +366,105 @@ void SettingsDialog::addTabs()
// Highlighting
vbox = new QVBoxLayout();
auto highlights = new QListWidget();
globalHighlights = highlights;
QStringList items = settings.highlightProperties.get().keys();
highlights->addItems(items);
auto customSound = new QHBoxLayout();
auto soundForm = new QFormLayout();
{
vbox->addWidget(createCheckbox("Enable Highlighting", settings.enableHighlights));
vbox->addWidget(createCheckbox("Highlight messages containing your name", settings.enableHighlightsSelf));
vbox->addWidget(createCheckbox("Play sound when your name is mentioned", settings.enableHighlightSound));
vbox->addWidget(createCheckbox("Flash taskbar when your name is mentioned", settings.enableHighlightTaskbar));
customSound->addWidget(createCheckbox("Custom sound", settings.customHighlightSound));
auto selectBtn = new QPushButton("Select");
QObject::connect(selectBtn,&QPushButton::clicked,this,[&settings,this]{
auto fileName = QFileDialog::getOpenFileName(this,
tr("Open Sound"), "", tr("Image Files (*.mp3 *.wav)"));
settings.pathHighlightSound.set(fileName);
});
customSound->addWidget(selectBtn);
}
soundForm->addRow(customSound);
{
auto hbox = new QHBoxLayout();
auto addBtn = new QPushButton("Add");
auto editBtn = new QPushButton("Edit");
auto delBtn = new QPushButton("Remove");
QObject::connect(addBtn,&QPushButton::clicked,this,[highlights,this,&settings]{
auto show = new QWidget();
auto box = new QBoxLayout(QBoxLayout::TopToBottom);
auto edit = new QLineEdit();
auto add = new QPushButton("Add");
auto sound = new QCheckBox("Play sound");
auto task = new QCheckBox("Flash taskbar");
QObject::connect(add,&QPushButton::clicked,this,[=,&settings]{
if(edit->text().length()){
highlights->addItem(edit->text());
settings.highlightProperties.insertMap(edit->text(),sound->isChecked(),task->isChecked());
show->close();
}
});
box->addWidget(edit);
box->addWidget(add);
box->addWidget(sound);
box->addWidget(task);
show->setLayout(box);
show->show();
});
QObject::connect(editBtn,&QPushButton::clicked,this,[highlights,this,&settings]{
if(!highlights->selectedItems().isEmpty()){
auto show = new QWidget();
auto box = new QBoxLayout(QBoxLayout::TopToBottom);
auto edit = new QLineEdit();
edit->setText(highlights->selectedItems().first()->text());
auto add = new QPushButton("Apply");
auto sound = new QCheckBox("Play sound");
auto task = new QCheckBox("Flash taskbar");
QObject::connect(add,&QPushButton::clicked,this,[=,&settings]{
if(edit->text().length()){
settings.highlightProperties.getnonConst().remove(highlights->selectedItems().first()->text());
delete highlights->selectedItems().first();
highlights->addItem(edit->text());
settings.highlightProperties.insertMap(edit->text(),sound->isChecked(),task->isChecked());
show->close();
}
});
box->addWidget(edit);
box->addWidget(add);
box->addWidget(sound);
sound->setChecked(settings.highlightProperties.get().value(highlights->selectedItems().first()->text()).first);
box->addWidget(task);
task->setChecked(settings.highlightProperties.get().value(highlights->selectedItems().first()->text()).second);
show->setLayout(box);
show->show();
}
});
QObject::connect(delBtn,&QPushButton::clicked,this,[highlights,&settings]{
if(!highlights->selectedItems().isEmpty()){
settings.highlightProperties.getnonConst().remove(highlights->selectedItems().first()->text());
delete highlights->selectedItems().first();
}
});
vbox->addLayout(soundForm);
vbox->addWidget(highlights);
hbox->addWidget(addBtn);
hbox->addWidget(editBtn);
hbox->addWidget(delBtn);
vbox->addLayout(hbox);
}
vbox->addStretch(1);
addTab(vbox, "Highlighting", ":/images/format_Bold_16xLG.png");
@@ -461,7 +579,18 @@ void SettingsDialog::okButtonClicked()
void SettingsDialog::cancelButtonClicked()
{
// TODO: Re-implement the snapshot feature properly
auto &instance = SettingsManager::getInstance();
this->snapshot.apply();
instance.highlightProperties.set(this->snapshot._mapItems);
QStringList list = instance.highlightProperties.get().keys();
list.removeDuplicates();
while(globalHighlights->count()>0)
{
delete globalHighlights->takeItem(0);
}
globalHighlights->addItems(list);
this->close();
}