X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Ffontssettingspage.cpp;h=c3f2117e2090c6c9871e024ed541fd82faefe13c;hp=3a9843e3e4c268d802253eb68496d7550f6f8988;hb=64c514fc7e0e57c9ef05abdb5e7be725ff185a60;hpb=4bfbd8dcbcb398302aaad0b6707c561760d7a7ac diff --git a/src/qtui/settingspages/fontssettingspage.cpp b/src/qtui/settingspages/fontssettingspage.cpp index 3a9843e3..c3f2117e 100644 --- a/src/qtui/settingspages/fontssettingspage.cpp +++ b/src/qtui/settingspages/fontssettingspage.cpp @@ -21,6 +21,8 @@ #include "fontssettingspage.h" #include "qtui.h" +#include "qtuisettings.h" +#include "qtuistyle.h" #include @@ -31,84 +33,123 @@ FontsSettingsPage::FontsSettingsPage(QWidget *parent) mapper = new QSignalMapper(this); connect(ui.chooseGeneral, SIGNAL(clicked()), mapper, SLOT(map())); connect(ui.chooseTopic, SIGNAL(clicked()), mapper, SLOT(map())); - connect(ui.chooseNickList, SIGNAL(clicked()), mapper, SLOT(map())); connect(ui.chooseBufferView, SIGNAL(clicked()), mapper, SLOT(map())); + connect(ui.chooseNickList, SIGNAL(clicked()), mapper, SLOT(map())); + connect(ui.chooseInputLine, SIGNAL(clicked()), mapper, SLOT(map())); connect(ui.chooseChatMessages, SIGNAL(clicked()), mapper, SLOT(map())); connect(ui.chooseNicks, SIGNAL(clicked()), mapper, SLOT(map())); connect(ui.chooseTimestamp, SIGNAL(clicked()), mapper, SLOT(map())); mapper->setMapping(ui.chooseGeneral, ui.demoGeneral); mapper->setMapping(ui.chooseTopic, ui.demoTopic); - mapper->setMapping(ui.chooseNickList, ui.demoNickList); mapper->setMapping(ui.chooseBufferView, ui.demoBufferView); + mapper->setMapping(ui.chooseNickList, ui.demoNickList); + mapper->setMapping(ui.chooseInputLine, ui.demoInputLine); mapper->setMapping(ui.chooseChatMessages, ui.demoChatMessages); mapper->setMapping(ui.chooseNicks, ui.demoNicks); mapper->setMapping(ui.chooseTimestamp, ui.demoTimestamp); connect(mapper, SIGNAL(mapped(QWidget *)), this, SLOT(chooseFont(QWidget *))); + //connect(ui.customAppFonts, SIGNAL(clicked()), this, SLOT(widgetHasChanged())); + connect(ui.checkTopic, SIGNAL(clicked()), this, SLOT(widgetHasChanged())); + connect(ui.checkBufferView, SIGNAL(clicked()), this, SLOT(widgetHasChanged())); + connect(ui.checkNickList, SIGNAL(clicked()), this, SLOT(widgetHasChanged())); + connect(ui.checkInputLine, SIGNAL(clicked()), this, SLOT(widgetHasChanged())); + connect(ui.checkNicks, SIGNAL(clicked()), this, SLOT(widgetHasChanged())); + connect(ui.checkTimestamp, SIGNAL(clicked()), this, SLOT(widgetHasChanged())); + load(); } -bool FontsSettingsPage::hasChanged() const { - - return false; +bool FontsSettingsPage::hasDefaults() const { + return true; } void FontsSettingsPage::defaults() { load(Settings::Default); - + widgetHasChanged(); } void FontsSettingsPage::load() { load(Settings::Custom); - changeState(false); + setChangedState(false); } void FontsSettingsPage::load(Settings::Mode mode) { + QtUiSettings s; + bool useInputLineFont = s.value("UseInputLineFont", QVariant(false)).toBool(); + QFont inputLineFont; + if(useInputLineFont) { + ui.checkInputLine->setChecked(true); + inputLineFont = s.value("InputLineFont").value(); + } else { + inputLineFont = qApp->font(); + } + initLabel(ui.demoInputLine, inputLineFont); + QTextCharFormat chatFormat = QtUi::style()->format(UiStyle::None, mode); - setFont(ui.demoChatMessages, chatFormat.font()); + initLabel(ui.demoChatMessages, chatFormat.font()); QTextCharFormat nicksFormat = QtUi::style()->format(UiStyle::Sender, mode); if(nicksFormat.hasProperty(QTextFormat::FontFamily)) { - setFont(ui.demoNicks, nicksFormat.font()); + initLabel(ui.demoNicks, nicksFormat.font()); ui.checkNicks->setChecked(true); } else { - setFont(ui.demoNicks, chatFormat.font()); + initLabel(ui.demoNicks, chatFormat.font()); ui.checkNicks->setChecked(false); } + QTextCharFormat timestampFormat = QtUi::style()->format(UiStyle::Timestamp, mode); if(timestampFormat.hasProperty(QTextFormat::FontFamily)) { - setFont(ui.demoTimestamp, timestampFormat.font()); + initLabel(ui.demoTimestamp, timestampFormat.font()); ui.checkTimestamp->setChecked(true); } else { - setFont(ui.demoTimestamp, chatFormat.font()); + initLabel(ui.demoTimestamp, chatFormat.font()); ui.checkTimestamp->setChecked(false); } + setChangedState(false); } void FontsSettingsPage::save() { + QtUiSettings s; + s.setValue("UseInputLineFont", (ui.checkInputLine->checkState() == Qt::Checked)); + s.setValue("InputLineFont", ui.demoInputLine->font()); + QTextCharFormat chatFormat = QtUi::style()->format(UiStyle::None); chatFormat.setFont(ui.demoChatMessages->font()); QtUi::style()->setFormat(UiStyle::None, chatFormat, Settings::Custom); - if(ui.checkNicks->checkState() == Qt::Checked) { - QTextCharFormat nicksFormat = QtUi::style()->format(UiStyle::Sender); + + QTextCharFormat nicksFormat = QtUi::style()->format(UiStyle::Sender); + if(ui.checkNicks->checkState() == Qt::Checked) nicksFormat.setFont(ui.demoNicks->font()); - QtUi::style()->setFormat(UiStyle::Sender, nicksFormat, Settings::Custom); - } - if(ui.checkTimestamp->checkState() == Qt::Checked) { - QTextCharFormat timestampFormat = QtUi::style()->format(UiStyle::Timestamp); + else + clearFontFromFormat(nicksFormat); + QtUi::style()->setFormat(UiStyle::Sender, nicksFormat, Settings::Custom); + + QTextCharFormat timestampFormat = QtUi::style()->format(UiStyle::Timestamp); + if(ui.checkTimestamp->checkState() == Qt::Checked) timestampFormat.setFont(ui.demoTimestamp->font()); - QtUi::style()->setFormat(UiStyle::Timestamp, timestampFormat, Settings::Custom); - } - changeState(false); + else + clearFontFromFormat(timestampFormat); + QtUi::style()->setFormat(UiStyle::Timestamp, timestampFormat, Settings::Custom); + + setChangedState(false); +} + +void FontsSettingsPage::widgetHasChanged() { + if(!hasChanged()) setChangedState(true); +} + +void FontsSettingsPage::initLabel(QLabel *label, const QFont &font) { + setFont(label, font); } void FontsSettingsPage::setFont(QLabel *label, const QFont &font) { - QFontInfo fontInfo(font); label->setFont(font); - label->setText(QString("%1 %2").arg(fontInfo.family()).arg(fontInfo.pointSize())); + label->setText(QString("%1 %2").arg(font.family()).arg(font.pointSize())); + widgetHasChanged(); } void FontsSettingsPage::chooseFont(QWidget *widget) { @@ -120,3 +161,18 @@ void FontsSettingsPage::chooseFont(QWidget *widget) { setFont(label, font); } } + +void FontsSettingsPage::clearFontFromFormat(QTextCharFormat &fmt) { + fmt.clearProperty(QTextFormat::FontFamily); + fmt.clearProperty(QTextFormat::FontPointSize); + fmt.clearProperty(QTextFormat::FontPixelSize); + fmt.clearProperty(QTextFormat::FontWeight); + fmt.clearProperty(QTextFormat::FontItalic); + fmt.clearProperty(QTextFormat::TextUnderlineStyle); + fmt.clearProperty(QTextFormat::FontOverline); + fmt.clearProperty(QTextFormat::FontStrikeOut); + fmt.clearProperty(QTextFormat::FontFixedPitch); + fmt.clearProperty(QTextFormat::FontCapitalization); + fmt.clearProperty(QTextFormat::FontWordSpacing); + fmt.clearProperty(QTextFormat::FontLetterSpacing); +}