quarkai/setting/settingdelegate.cpp

123 lines
3.8 KiB
C++
Raw Normal View History

2018-01-17 11:45:16 +08:00
/*
* Copyright (C) 2013 ~ 2018 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd.
*
* Authors:
* Kobe Lee xiangli@ubuntukylin.com/kobe24_lixiang@126.com
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "settingdelegate.h"
#include "settingmodel.h"
#include <QPainter>
#include <QDebug>
#include <QImageReader>
2018-01-22 12:18:09 +08:00
inline const QString covertModuleName(const QString &module)
{
if (module == "ThemePage") {
return QString(QObject::tr("ThemeSetting"));
}
else if (module == "IconPage") {
return QString(QObject::tr("IconSetting"));
}
else if (module == "MousePage") {
return QString(QObject::tr("MousePointer"));
}
else if (module == "SoundPage") {
return QString(QObject::tr("SoundEffect"));
}
else if (module == "PanelPage") {
return QString(QObject::tr("Panel"));
}
else if (module == "MenuPage") {
return QString(QObject::tr("StartMenu"));
}
else if (module == "WindowPage") {
return QString(QObject::tr("Window"));
}
else if (module == "FontPage") {
return QString(QObject::tr("FontSetting"));
}
else if (module == "TouchPadPage") {
return QString(QObject::tr("Touchpad"));
}
else if (module == "EnergyPage") {
return QString(QObject::tr("Energy saving"));
}
else if (module == "FMPage") {
return QString(QObject::tr("File manager"));
}
else {
return module;
}
}
2018-01-17 11:45:16 +08:00
SettingDelegate::SettingDelegate(QObject *parent)
: QItemDelegate(parent)
{
}
void SettingDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
const QString module = index.data().toString();
if (module.isEmpty())
return;
QPainterPath path;//QPainterPath path(option.rect.topLeft());
painter->setRenderHint(QPainter::Antialiasing, true);
path.addRect(QRectF(option.rect));
// QRectF r(0 / 2.0, 0 / 2.0, option.rect.width() - 0, option.rect.height() - 0);//左边 上边 右边 下边
// path.addRoundedRect(r, 4, 4);painter.drawRoundedRect(r, 4, 4);
QPen pen;
pen.setColor(QColor("#0B95D7"));
pen.setWidth(0.8);
painter->setPen(pen);//painter->setPen(Qt::NoPen);
if (index.data(SettingModel::HoverRole).toBool()) {
painter->setOpacity(1);
painter->drawPixmap(QPoint(option.rect.x() + 5, option.rect.y() + 5), QPixmap("://res/clothes.png"));
painter->fillPath(path, QColor(135, 206, 250, 127));//QColor::fromRgbF(1, 1, 1, 0.4)
}
else {
painter->setOpacity(0.5);
painter->fillPath(path, QColor(255, 250, 250, 127));
}
painter->drawPath(path);
auto font = option.font;
if (index.data(SettingModel::HoverRole).toBool()) {
font.setPixelSize(15);
painter->setFont(font);
painter->setPen(Qt::white);
}
else {
font.setPixelSize(12);
painter->setFont(font);
painter->setPen(QPen(QColor("#363636"), 1));
}
2018-01-22 12:18:09 +08:00
const QString name = covertModuleName(module);
painter->drawText(option.rect, Qt::AlignCenter, name);
2018-01-17 11:45:16 +08:00
}
QSize SettingDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
Q_UNUSED(option);
return index.data(Qt::SizeHintRole).toSize();
}