148 lines
4.2 KiB
C++
148 lines
4.2 KiB
C++
/*
|
|
* Copyright (C) 2020, Tianjin KYLIN Information Technology Co., Ltd.
|
|
*
|
|
* 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; either version 3, or (at your option)
|
|
* any later version.
|
|
*
|
|
* 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 "gsettingsubject.h"
|
|
#include "theme.h"
|
|
|
|
|
|
GsettingSubject::GsettingSubject(QObject *parent) : QObject(parent)
|
|
{
|
|
iniData();
|
|
iniConnection();
|
|
}
|
|
|
|
void GsettingSubject::iniConnection()
|
|
{
|
|
if(m_styleSettings!=nullptr){
|
|
connect(m_styleSettings, &QGSettings::changed, this, [=] (const QString &key){
|
|
if(key==STYLE_NAME){
|
|
if(m_stylelist.contains(m_styleSettings->get(STYLE_NAME).toString())){
|
|
theme::themetype=1;
|
|
emit blackStyle();
|
|
}else{
|
|
theme::themetype=0;
|
|
emit whiteStyle();
|
|
}
|
|
}
|
|
if(key==STYLE_ICON_NAME || key==STYLE_ICON){
|
|
emit iconChnaged();
|
|
}
|
|
if (key == SYSTEM_FONT_SIZE) {
|
|
const int size = m_styleSettings->get(SYSTEM_FONT_EKY).toInt();
|
|
emit fontChanged(size);
|
|
}
|
|
});
|
|
}
|
|
if(m_formatSettings!=nullptr){
|
|
connect(m_formatSettings, &QGSettings::changed, this, [=] (const QString &key) {
|
|
if (key == HOUR_SYSTEM) {
|
|
QString m_timeZone = m_formatSettings->get(TIME_FORMAT_KEY).toString();
|
|
emit timeZoneChanged(m_timeZone);
|
|
}
|
|
});
|
|
}
|
|
if(m_mouseSettings!=nullptr){
|
|
connect(m_mouseSettings, &QGSettings::changed, this, [=] (const QString &key) {
|
|
if(WHEEL_KEY_HW==key||WHEEL_KEY_SP==key){
|
|
getWheelSpeed();
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
void GsettingSubject::iniData()
|
|
{
|
|
const QByteArray style_id(ORG_UKUI_STYLE);
|
|
m_stylelist<<STYLE_NAME_KEY_DARK<<STYLE_NAME_KEY_BLACK;
|
|
if(QGSettings::isSchemaInstalled(style_id)){
|
|
m_styleSettings = new QGSettings(style_id);
|
|
}
|
|
const QByteArray timeId(FORMAT_SCHEMA);
|
|
if (QGSettings::isSchemaInstalled(timeId)){
|
|
m_formatSettings = new QGSettings(timeId);
|
|
}
|
|
const QByteArray mouseId(MOUSE_SCHEMA);
|
|
if (QGSettings::isSchemaInstalled(mouseId)){
|
|
m_mouseSettings = new QGSettings(mouseId);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief 初始化主题
|
|
*/
|
|
void GsettingSubject::iniWidgetStyle()
|
|
{
|
|
if(m_styleSettings!=nullptr){
|
|
if(m_stylelist.contains(m_styleSettings->get(STYLE_NAME).toString())){
|
|
emit blackStyle();
|
|
}else{
|
|
emit whiteStyle();
|
|
}
|
|
}
|
|
|
|
}
|
|
/**
|
|
* @brief 初始化时区
|
|
*/
|
|
void GsettingSubject::iniTimeZone()
|
|
{
|
|
// 监听时区变化
|
|
if(m_formatSettings!=nullptr){
|
|
QString m_timeZone = m_formatSettings->get(TIME_FORMAT_KEY).toString();
|
|
emit timeZoneChanged(m_timeZone);
|
|
}
|
|
|
|
}
|
|
/**
|
|
* @brief 初始化字体
|
|
*/
|
|
void GsettingSubject::iniFontSize()
|
|
{
|
|
if(m_styleSettings!=nullptr){
|
|
//字体
|
|
if (m_styleSettings->get(SYSTEM_FONT_EKY).toInt()) {
|
|
const int size = m_styleSettings->get(SYSTEM_FONT_EKY).toInt();
|
|
emit fontChanged(size);
|
|
}
|
|
}
|
|
}
|
|
void GsettingSubject::iniMouseWheel()
|
|
{
|
|
if(m_mouseSettings!=nullptr){
|
|
getWheelSpeed();
|
|
}
|
|
}
|
|
void GsettingSubject::getWheelSpeed()
|
|
{
|
|
if (m_mouseSettings->get(WHEEL_KEY_HW).toInt()) {
|
|
const int speed = m_mouseSettings->get(WHEEL_KEY_HW).toInt();
|
|
emit mouseWheelChanged(speed);
|
|
}
|
|
if (m_mouseSettings->get(WHEEL_KEY_SP).toInt()) {
|
|
const int speed = m_mouseSettings->get(WHEEL_KEY_SP).toInt();
|
|
emit mouseWheelChanged(speed);
|
|
}
|
|
}
|
|
|
|
GsettingSubject::~GsettingSubject()
|
|
{
|
|
delete m_styleSettings;
|
|
delete m_formatSettings;
|
|
delete m_mouseSettings;
|
|
}
|