provide options for views settings

work/spdx
Michail Vourlakos 4 years ago
parent 2b1464fb1b
commit c27727c9e7

@ -35,6 +35,12 @@ Generic::Generic(const Generic &o)
{
}
Generic::Generic(const QString &newid, const QString &newname)
: id(newid),
name(newname)
{
}
Generic &Generic::operator=(const Generic &rhs)
{
id = rhs.id;

@ -36,6 +36,7 @@ public:
Generic() = default;
Generic(Generic &&o);
Generic(const Generic &o);
Generic(const QString &newid, const QString &newname);
//! Layout data
QString id;

@ -37,6 +37,7 @@ class Screen : public Generic
{
public:
static constexpr const char* SERIALIZESPLITTER = ":::";
static const int ONPRIMARYID = 0;
Screen();
Screen(Screen &&o);

@ -61,9 +61,32 @@ QWidget *SingleOption::createEditor(QWidget *parent, const QStyleOptionViewItem
menu->addAction(action);
}
connect(menu, &QMenu::aboutToHide, button, &QWidget::clearFocus);
return button;
}
void SingleOption::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
editor->setGeometry(option.rect);
}
void SingleOption::setEditorData(QWidget *editor, const QModelIndex &index) const
{
QString currentText = index.data(Qt::DisplayRole).toString();
QPushButton *button = static_cast<QPushButton *>(editor);
button->setText(currentText);
}
bool SingleOption::editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option,
const QModelIndex &index)
{
Q_ASSERT(event);
Q_ASSERT(model);
return QStyledItemDelegate::editorEvent(event, model, option, index);
}
}
}
}

@ -43,11 +43,11 @@ public:
SingleOption(QObject *parent);
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
// void setEditorData(QWidget *editor, const QModelIndex &index) const override;
void setEditorData(QWidget *editor, const QModelIndex &index) const override;
// void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override;
// void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
//void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
// virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) override;
virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) override;
};

@ -25,6 +25,7 @@
#include "viewsdialog.h"
#include "viewshandler.h"
#include "viewsmodel.h"
#include "delegates/singleoptiondelegate.h"
#include "../generic/generictools.h"
// Qt
@ -92,11 +93,9 @@ void Views::init()
m_view->sortByColumn(m_viewSortColumn, m_viewSortOrder);
//m_view->setItemDelegateForColumn(Model::Layouts::NAMECOLUMN, new Settings::Layout::Delegate::LayoutName(this));
//m_view->setItemDelegateForColumn(Model::Layouts::BACKGROUNDCOLUMN, new Settings::Layout::Delegate::BackgroundDelegate(this));
//m_view->setItemDelegateForColumn(Model::Layouts::MENUCOLUMN, new Settings::Layout::Delegate::CheckBox(this));
//m_view->setItemDelegateForColumn(Model::Layouts::BORDERSCOLUMN, new Settings::Layout::Delegate::CheckBox(this));
//m_view->setItemDelegateForColumn(Model::Layouts::ACTIVITYCOLUMN, new Settings::Layout::Delegate::Activities(this));
m_view->setItemDelegateForColumn(Model::Views::SCREENCOLUMN, new Settings::View::Delegate::SingleOption(this));
m_view->setItemDelegateForColumn(Model::Views::EDGECOLUMN, new Settings::View::Delegate::SingleOption(this));
m_view->setItemDelegateForColumn(Model::Views::ALIGNMENTCOLUMN, new Settings::View::Delegate::SingleOption(this));
applyColumnWidths();

@ -22,6 +22,8 @@
// local
#include <coretypes.h>
#include "../../data/genericdata.h"
#include "../../data/screendata.h"
// KDE
#include <KLocalizedString>
@ -34,6 +36,9 @@ Views::Views(QObject *parent, Latte::Corona *corona)
: QAbstractTableModel(parent),
m_corona(corona)
{
initEdges();
initAlignments();
populateScreens();
}
Views::~Views()
@ -81,6 +86,42 @@ const Latte::Data::ViewsTable &Views::originalViewsData()
return o_viewsTable;
}
void Views::initEdges()
{
Latte::Data::GenericBasicTable edges;
edges << Data::Generic(QString::number(Plasma::Types::TopEdge), i18nc("top edge", "Top"));
edges << Data::Generic(QString::number(Plasma::Types::LeftEdge), i18nc("left edge", "Left"));
edges << Data::Generic(QString::number(Plasma::Types::BottomEdge), i18nc("bottom edge", "Bottom"));
edges << Data::Generic(QString::number(Plasma::Types::RightEdge), i18nc("right edge", "Right"));
s_edges.setValue<Latte::Data::GenericBasicTable>(edges);
}
void Views::initAlignments()
{
Latte::Data::GenericBasicTable horizontals;
Latte::Data::GenericBasicTable verticals;
horizontals << Data::Generic(QString::number(Latte::Types::Left), i18nc("left alignment", "Left"));
verticals << Data::Generic(QString::number(Latte::Types::Left), i18nc("top alignment", "Top"));
horizontals << Data::Generic(QString::number(Latte::Types::Center), i18nc("center alignment", "Center"));
verticals << horizontals[1];
horizontals << Data::Generic(QString::number(Latte::Types::Right), i18nc("right alignment", "Right"));
verticals << Data::Generic(QString::number(Latte::Types::Left), i18nc("bottom alignment", "Bottom"));
horizontals << Data::Generic(QString::number(Latte::Types::Right), i18nc("justify alignment", "Justify"));
verticals << horizontals[3];
s_horizontalAlignments.setValue<Latte::Data::GenericBasicTable>(horizontals);
s_verticalAlignments.setValue<Latte::Data::GenericBasicTable>(verticals);
}
void Views::populateScreens()
{
}
void Views::setOriginalData(Latte::Data::ViewsTable &data)
{
@ -152,6 +193,22 @@ QVariant Views::headerData(int section, Qt::Orientation orientation, int role) c
return QAbstractTableModel::headerData(section, orientation, role);
}
Qt::ItemFlags Views::flags(const QModelIndex &index) const
{
const int column = index.column();
const int row = index.row();
auto flags = QAbstractTableModel::flags(index);
if (column == SCREENCOLUMN
|| column == EDGECOLUMN
|| column == ALIGNMENTCOLUMN) {
flags |= Qt::ItemIsEditable;
}
return flags;
}
QVariant Views::data(const QModelIndex &index, int role) const
{
@ -167,8 +224,16 @@ QVariant Views::data(const QModelIndex &index, int role) const
return m_viewsTable[row].id;
} else if (role == ISACTIVEROLE) {
return m_viewsTable[row].isActive;
} else if (role == CHOICESROLE) {
if (column == EDGECOLUMN) {
return s_edges;
} else if (column == ALIGNMENTCOLUMN) {
bool isVertical = (m_viewsTable[row].edge == Plasma::Types::LeftEdge || m_viewsTable[row].edge == Plasma::Types::RightEdge);
return isVertical ? s_verticalAlignments : s_horizontalAlignments;
}
}
if (role == Qt::TextAlignmentRole){
return static_cast<Qt::Alignment::Int>(Qt::AlignHCenter | Qt::AlignVCenter);
}
@ -185,12 +250,14 @@ QVariant Views::data(const QModelIndex &index, int role) const
}
break;
case SCREENCOLUMN:
if (role == Qt::DisplayRole || role == Qt::UserRole){
if (role == Qt::DisplayRole){
return (m_viewsTable[row].onPrimary ? QString("Primary") : QString::number(m_viewsTable[row].screen));
} else if (role == Qt::UserRole) {
return m_viewsTable[row].onPrimary ? QString::number(Data::Screen::ONPRIMARYID) : QString::number(m_viewsTable[row].screen);
}
break;
case EDGECOLUMN:
if (role == Qt::DisplayRole || role == Qt::UserRole){
if (role == Qt::DisplayRole){
if (m_viewsTable[row].edge == Plasma::Types::BottomEdge) {
return QString("Bottom");
} else if (m_viewsTable[row].edge == Plasma::Types::TopEdge) {
@ -202,10 +269,12 @@ QVariant Views::data(const QModelIndex &index, int role) const
}
return QString("Unknown");
} else if (role == Qt::UserRole) {
return QString::number(m_viewsTable[row].edge);
}
break;
case ALIGNMENTCOLUMN:
if (role == Qt::DisplayRole || role == Qt::UserRole){
if (role == Qt::DisplayRole){
if (m_viewsTable[row].alignment == Latte::Types::Center) {
return QString("Center");
} else if (m_viewsTable[row].alignment == Latte::Types::Left) {
@ -221,6 +290,8 @@ QVariant Views::data(const QModelIndex &index, int role) const
}
return QString("Unknown");
} else if (role == Qt::UserRole) {
return QString::number(m_viewsTable[row].alignment);
}
break;
case SUBCONTAINMENTSCOLUMN:

@ -23,6 +23,7 @@
// local
#include "../../lattecorona.h"
#include "../../data/genericbasictable.h"
#include "../../data/viewdata.h"
#include "../../data/viewstable.h"
@ -77,6 +78,7 @@ public:
QVariant data(const QModelIndex &index, int role) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
Qt::ItemFlags flags(const QModelIndex &index) const override;
const Latte::Data::ViewsTable &currentViewsData();
const Latte::Data::ViewsTable &originalViewsData();
@ -90,11 +92,21 @@ signals:
private slots:
void clear();
void initEdges();
void initAlignments();
void populateScreens();
private:
Latte::Data::ViewsTable m_viewsTable;
Latte::Data::ViewsTable o_viewsTable;
Latte::Corona *m_corona{nullptr};
QVariant s_edges;
QVariant s_horizontalAlignments;
QVariant s_verticalAlignments;
Latte::Data::GenericBasicTable s_screens;
};
}

Loading…
Cancel
Save