2018-10-16 19:26:04 -04:00
|
|
|
#include "DecodeHighlightingListView.hpp"
|
|
|
|
|
|
|
|
#include <QAction>
|
|
|
|
#include <QColorDialog>
|
|
|
|
|
2018-11-07 12:49:45 -05:00
|
|
|
#include "models/DecodeHighlightingModel.hpp"
|
2018-10-16 19:26:04 -04:00
|
|
|
#include "MessageBox.hpp"
|
|
|
|
|
2019-06-06 07:56:25 -04:00
|
|
|
#include "moc_DecodeHighlightingListView.cpp"
|
|
|
|
|
2018-10-16 19:26:04 -04:00
|
|
|
DecodeHighlightingListView::DecodeHighlightingListView (QWidget * parent)
|
|
|
|
: QListView {parent}
|
|
|
|
{
|
2018-11-28 20:03:44 -05:00
|
|
|
auto * fg_colour_action = new QAction {tr ("&Foreground color ..."), this};
|
|
|
|
addAction (fg_colour_action);
|
|
|
|
connect (fg_colour_action, &QAction::triggered, [this] (bool /*checked*/) {
|
2018-10-16 19:26:04 -04:00
|
|
|
auto const& index = currentIndex ();
|
|
|
|
auto colour = QColorDialog::getColor (model ()->data (index, Qt::ForegroundRole).value<QBrush> ().color ()
|
|
|
|
, this
|
|
|
|
, tr ("Choose %1 Foreground Color")
|
|
|
|
.arg (model ()->data (index).toString ()));
|
|
|
|
if (colour.isValid ())
|
|
|
|
{
|
2018-11-28 20:03:44 -05:00
|
|
|
model ()->setData (index, QBrush {colour}, Qt::ForegroundRole);
|
2018-10-16 19:26:04 -04:00
|
|
|
}
|
|
|
|
});
|
2018-11-28 20:03:44 -05:00
|
|
|
|
|
|
|
auto * unset_fg_colour_action = new QAction {tr ("&Unset foreground color"), this};
|
|
|
|
addAction (unset_fg_colour_action);
|
|
|
|
connect (unset_fg_colour_action, &QAction::triggered, [this] (bool /*checked*/) {
|
|
|
|
model ()->setData (currentIndex (), QBrush {}, Qt::ForegroundRole);
|
|
|
|
});
|
|
|
|
|
|
|
|
auto * bg_colour_action = new QAction {tr ("&Background color ..."), this};
|
|
|
|
addAction (bg_colour_action);
|
|
|
|
connect (bg_colour_action, &QAction::triggered, [this] (bool /*checked*/) {
|
2018-10-16 19:26:04 -04:00
|
|
|
auto const& index = currentIndex ();
|
|
|
|
auto colour = QColorDialog::getColor (model ()->data (index, Qt::BackgroundRole).value<QBrush> ().color ()
|
|
|
|
, this
|
|
|
|
, tr ("Choose %1 Background Color")
|
|
|
|
.arg (model ()->data (index).toString ()));
|
|
|
|
if (colour.isValid ())
|
|
|
|
{
|
2018-11-28 20:03:44 -05:00
|
|
|
model ()->setData (index, QBrush {colour}, Qt::BackgroundRole);
|
2018-10-16 19:26:04 -04:00
|
|
|
}
|
|
|
|
});
|
2018-11-28 20:03:44 -05:00
|
|
|
|
|
|
|
auto * unset_bg_colour_action = new QAction {tr ("U&nset background color"), this};
|
|
|
|
addAction (unset_bg_colour_action);
|
|
|
|
connect (unset_bg_colour_action, &QAction::triggered, [this] (bool /*checked*/) {
|
|
|
|
model ()->setData (currentIndex (), QBrush {}, Qt::BackgroundRole);
|
|
|
|
});
|
|
|
|
|
|
|
|
auto * defaults_action = new QAction {tr ("&Reset this item to defaults"), this};
|
|
|
|
addAction (defaults_action);
|
|
|
|
connect (defaults_action, &QAction::triggered, [this] (bool /*checked*/) {
|
2018-10-16 19:26:04 -04:00
|
|
|
auto const& index = currentIndex ();
|
|
|
|
model ()->setData (index, model ()->data (index, DecodeHighlightingModel::EnabledDefaultRole).toBool () ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
|
|
|
|
model ()->setData (index, model ()->data (index, DecodeHighlightingModel::ForegroundDefaultRole), Qt::ForegroundRole);
|
|
|
|
model ()->setData (index, model ()->data (index, DecodeHighlightingModel::BackgroundDefaultRole), Qt::BackgroundRole);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
QSize DecodeHighlightingListView::sizeHint () const
|
|
|
|
{
|
|
|
|
auto item_height = sizeHintForRow (0);
|
|
|
|
if (item_height >= 0)
|
|
|
|
{
|
|
|
|
// set the height hint to exactly the space required for all the
|
|
|
|
// items
|
|
|
|
return {width (), (model ()->rowCount () * (item_height + 2 * spacing ())) + 2 * frameWidth ()};
|
|
|
|
}
|
|
|
|
return QListView::sizeHint ();
|
|
|
|
}
|