1
0
mirror of https://github.com/KDE/latte-dock.git synced 2025-01-03 21:17:49 +03:00

detailsdlg:provide scheme custom item delegate

This commit is contained in:
Michail Vourlakos 2021-06-16 15:32:57 +03:00
parent 7dca67cb68
commit 703c2bd6f6
4 changed files with 90 additions and 0 deletions

View File

@ -1,6 +1,7 @@
set(lattedock-app_SRCS
${lattedock-app_SRCS}
${CMAKE_CURRENT_SOURCE_DIR}/colorcmbitemdelegate.cpp
${CMAKE_CURRENT_SOURCE_DIR}/schemecmbitemdelegate.cpp
PARENT_SCOPE
)

View File

@ -0,0 +1,53 @@
/*
SPDX-FileCopyrightText: 2020 Michail Vourlakos <mvourlakos@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "schemecmbitemdelegate.h"
// local
#include "../schemesmodel.h"
#include "../../generic/generictools.h"
// Qt
#include <QColor>
#include <QDebug>
#include <QModelIndex>
#include <QPainter>
#include <QString>
namespace Latte {
namespace Settings {
namespace Details {
namespace Delegate {
SchemeCmbItemDelegate::SchemeCmbItemDelegate(QObject *parent)
: QStyledItemDelegate(parent)
{
}
void SchemeCmbItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItem myOptions = option;
//! background
Latte::drawBackground(painter, option);
QColor backcolor = index.data(Model::Schemes::BACKGROUNDCOLORROLE).value<QColor>();
QColor textcolor = index.data(Model::Schemes::TEXTCOLORROLE).value<QColor>();
//! icon
QRect remained = Latte::remainedFromColorSchemeIcon(myOptions, Qt::AlignLeft, 4, 2);
Latte::drawColorSchemeIcon(painter, myOptions, textcolor, backcolor, Qt::AlignLeft, 5, 2); //+1px in order to take into account popup window border
myOptions.rect = remained;
//!
QStyledItemDelegate::paint(painter, myOptions, index);
}
}
}
}
}

View File

@ -0,0 +1,34 @@
/*
SPDX-FileCopyrightText: 2020 Michail Vourlakos <mvourlakos@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef SCHEMECMBITEMDELEGATE_H
#define SCHEMECMBITEMDELEGATE_H
// Qt
#include <QStyledItemDelegate>
class QModelIndex;
class QWidget;
namespace Latte {
namespace Settings {
namespace Details {
namespace Delegate {
class SchemeCmbItemDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
SchemeCmbItemDelegate(QObject *parent = 0);
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
};
}
}
}
}
#endif

View File

@ -12,6 +12,7 @@
#include "patternwidget.h"
#include "schemesmodel.h"
#include "delegates/colorcmbitemdelegate.h"
#include "delegates/schemecmbitemdelegate.h"
#include "../settingsdialog/layoutscontroller.h"
#include "../settingsdialog/layoutsmodel.h"
#include "../settingsdialog/delegates/layoutcmbitemdelegate.h"
@ -59,6 +60,7 @@ void DetailsHandler::init()
//! Schemes
m_ui->customSchemeCmb->setModel(m_schemesModel);
m_ui->customSchemeCmb->setItemDelegate(new Settings::Details::Delegate::SchemeCmbItemDelegate(this));
//! Background Pattern
m_backButtonsGroup = new QButtonGroup(this);