/* * Cppcheck - A tool for static C/C++ code analysis * Copyright (C) 2007-2019 Cppcheck team. * * 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 of the License, 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 . */ #include "codeeditorstyle.h" #include CodeEditorStyle::CodeEditorStyle( const QColor& CtrlFGColor, const QColor& CtrlBGColor, const QColor& HiLiBGColor, const QColor& LnNumFGColor, const QColor& LnNumBGColor, const QColor& KeyWdFGColor, const QFont::Weight& KeyWdWeight, const QColor& ClsFGColor, const QFont::Weight& ClsWeight, const QColor& QteFGColor, const QFont::Weight& QteWeight, const QColor& CmtFGColor, const QFont::Weight& CmtWeight, const QColor& SymbFGColor, const QColor& SymbBGColor, const QFont::Weight& SymbWeight) : widgetFGColor(CtrlFGColor), widgetBGColor(CtrlBGColor), highlightBGColor(HiLiBGColor), lineNumFGColor(LnNumFGColor), lineNumBGColor(LnNumBGColor), keywordColor(KeyWdFGColor), keywordWeight(KeyWdWeight), classColor(ClsFGColor), classWeight(ClsWeight), quoteColor(QteFGColor), quoteWeight(QteWeight), commentColor(CmtFGColor), commentWeight(CmtWeight), symbolFGColor(SymbFGColor), symbolBGColor(SymbBGColor), symbolWeight(SymbWeight) {} bool CodeEditorStyle::operator==( const CodeEditorStyle& rhs ) const { if( widgetFGColor != rhs.widgetFGColor ) return false; if( widgetBGColor != rhs.widgetBGColor ) return false; if( highlightBGColor != rhs.highlightBGColor ) return false; if( lineNumFGColor != rhs.lineNumFGColor ) return false; if( lineNumBGColor != rhs.lineNumBGColor ) return false; if( keywordColor != rhs.keywordColor ) return false; if( keywordWeight != rhs.keywordWeight ) return false; if( classColor != rhs.classColor ) return false; if( classWeight != rhs.classWeight ) return false; if( quoteColor != rhs.quoteColor ) return false; if( quoteWeight != rhs.quoteWeight ) return false; if( commentColor != rhs.commentColor ) return false; if( commentWeight != rhs.commentWeight ) return false; if( symbolFGColor != rhs.symbolFGColor ) return false; if( symbolBGColor != rhs.symbolBGColor ) return false; if( symbolWeight != rhs.symbolWeight ) return false; return true; } bool CodeEditorStyle::operator!=( const CodeEditorStyle& rhs ) const { return !(*this == rhs); } CodeEditorStyle CodeEditorStyle::loadSettings( QSettings *settings ) { CodeEditorStyle theStyle( defaultStyleLight ); if( !settings) return theStyle; if( !settings->childGroups().contains( SETTINGS_STYLE_GROUP )) return theStyle; // style section exists - load values settings->beginGroup( SETTINGS_STYLE_GROUP ); QString type = settings->value( SETTINGS_STYLE_TYPE, QVariant( SETTINGS_STYLE_TYPE_LIGHT ) ).toString(); if( type == SETTINGS_STYLE_TYPE_LIGHT ) { settings->endGroup(); return theStyle; } if( type == SETTINGS_STYLE_TYPE_DARK ) { theStyle = defaultStyleDark; settings->endGroup(); return theStyle; } if( type == SETTINGS_STYLE_TYPE_CUSTOM ) { theStyle.widgetFGColor = settings->value( SETTINGS_STYLE_WIDGETFG, QVariant(defaultStyleLight.widgetFGColor)).value(); theStyle.widgetBGColor = settings->value( SETTINGS_STYLE_WIDGETBG, QVariant(defaultStyleLight.widgetBGColor)).value(); theStyle.highlightBGColor = settings->value( SETTINGS_STYLE_HILIFG, QVariant(defaultStyleLight.highlightBGColor)).value(); theStyle.lineNumFGColor = settings->value( SETTINGS_STYLE_LINENUMFG, QVariant(defaultStyleLight.lineNumFGColor)).value(); theStyle.lineNumBGColor = settings->value( SETTINGS_STYLE_LINENUMBG, QVariant(defaultStyleLight.lineNumBGColor)).value(); theStyle.keywordColor = settings->value( SETTINGS_STYLE_KEYWORDFG, QVariant(defaultStyleLight.keywordColor)).value(); QVariant defKeyWWt(static_cast(defaultStyleLight.keywordWeight)); theStyle.keywordWeight = static_cast( settings->value( SETTINGS_STYLE_KEYWORDWT, defKeyWWt).toInt()); theStyle.classColor = settings->value( SETTINGS_STYLE_CLASSFG, QVariant(defaultStyleLight.classColor)).value(); QVariant defClsWt(static_cast(defaultStyleLight.classWeight)); theStyle.classWeight = static_cast( settings->value( SETTINGS_STYLE_CLASSWT, defClsWt).toInt()); theStyle.quoteColor = settings->value( SETTINGS_STYLE_QUOTEFG, QVariant(defaultStyleLight.quoteColor)).value(); QVariant defQteWt(static_cast(defaultStyleLight.quoteWeight)); theStyle.quoteWeight = static_cast( settings->value( SETTINGS_STYLE_QUOTEWT, defQteWt).toInt()); theStyle.commentColor = settings->value( SETTINGS_STYLE_COMMENTFG, QVariant(defaultStyleLight.commentColor)).value(); QVariant defCmtWt(static_cast(defaultStyleLight.commentWeight)); theStyle.commentWeight = static_cast( settings->value( SETTINGS_STYLE_COMMENTWT, defCmtWt).toInt()); theStyle.symbolFGColor = settings->value( SETTINGS_STYLE_SYMBOLFG, QVariant(defaultStyleLight.symbolFGColor)).value(); theStyle.symbolBGColor = settings->value( SETTINGS_STYLE_SYMBOLBG, QVariant(defaultStyleLight.symbolBGColor)).value(); QVariant defSymWt(static_cast(defaultStyleLight.symbolWeight)); theStyle.symbolWeight = static_cast( settings->value( SETTINGS_STYLE_SYMBOLWT, defSymWt).toInt()); } settings->endGroup(); return theStyle; } void CodeEditorStyle::saveSettings( QSettings *settings, const CodeEditorStyle& theStyle ) { if( !settings ) return; if( settings->childGroups().contains( SETTINGS_STYLE_GROUP )) { settings->remove( SETTINGS_STYLE_GROUP ); } settings->beginGroup( SETTINGS_STYLE_GROUP ); bool isDefaultLight = ( defaultStyleLight == theStyle ); bool isDefaultDark = ( defaultStyleDark == theStyle ); if( isDefaultLight && !isDefaultDark ) { settings->setValue( SETTINGS_STYLE_TYPE, SETTINGS_STYLE_TYPE_LIGHT ); } else if( !isDefaultLight && isDefaultDark ) { settings->setValue( SETTINGS_STYLE_TYPE, SETTINGS_STYLE_TYPE_DARK ); } else { settings->setValue( SETTINGS_STYLE_TYPE, SETTINGS_STYLE_TYPE_CUSTOM ); settings->setValue( SETTINGS_STYLE_WIDGETFG, QVariant( theStyle.widgetFGColor )); settings->setValue( SETTINGS_STYLE_WIDGETBG, QVariant( theStyle.widgetBGColor )); settings->setValue( SETTINGS_STYLE_HILIFG, QVariant( theStyle.highlightBGColor )); settings->setValue( SETTINGS_STYLE_LINENUMFG, QVariant( theStyle.lineNumFGColor )); settings->setValue( SETTINGS_STYLE_LINENUMBG, QVariant( theStyle.lineNumBGColor )); settings->setValue( SETTINGS_STYLE_KEYWORDFG, QVariant( theStyle.keywordColor )); settings->setValue( SETTINGS_STYLE_KEYWORDWT, QVariant( static_cast( theStyle.keywordWeight ))); settings->setValue( SETTINGS_STYLE_CLASSFG, QVariant( theStyle.classColor )); settings->setValue( SETTINGS_STYLE_CLASSWT, QVariant( static_cast( theStyle.classWeight ))); settings->setValue( SETTINGS_STYLE_QUOTEFG, QVariant( theStyle.quoteColor )); settings->setValue( SETTINGS_STYLE_QUOTEWT, QVariant( static_cast( theStyle.quoteWeight ))); settings->setValue( SETTINGS_STYLE_COMMENTFG, QVariant( theStyle.commentColor )); settings->setValue( SETTINGS_STYLE_COMMENTWT, QVariant( static_cast( theStyle.commentWeight ))); settings->setValue( SETTINGS_STYLE_SYMBOLFG, QVariant( theStyle.symbolFGColor )); settings->setValue( SETTINGS_STYLE_SYMBOLBG, QVariant( theStyle.symbolBGColor )); settings->setValue( SETTINGS_STYLE_SYMBOLWT, QVariant( static_cast( theStyle.symbolWeight ))); } settings->endGroup(); }