File indexing completed on 2025-09-14 03:43:08

0001 /*
0002     File                 : NotesDock.cpp
0003     Project              : LabPlot
0004     Description          : Dock for configuring notes
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2016 Garvit Khatri <garvitdelhi@gmail.com>
0007 
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 
0011 #include "NoteDock.h"
0012 #include "kdefrontend/TemplateHandler.h"
0013 
0014 #include <KConfig>
0015 #include <KConfigGroup>
0016 #include <KLocalizedString>
0017 #include <QDir>
0018 
0019 NoteDock::NoteDock(QWidget* parent)
0020     : BaseDock(parent) {
0021     ui.setupUi(this);
0022     setBaseWidgets(ui.leName, ui.teComment);
0023 
0024     connect(ui.kcbBgColor, &KColorButton::changed, this, &NoteDock::backgroundColorChanged);
0025     connect(ui.kcbTextColor, &KColorButton::changed, this, &NoteDock::textColorChanged);
0026     connect(ui.kfrTextFont, &KFontRequester::fontSelected, this, &NoteDock::textFontChanged);
0027 
0028     auto* templateHandler = new TemplateHandler(this, QLatin1String("Note"));
0029     ui.gridLayout->addWidget(templateHandler, 8, 3);
0030     templateHandler->show();
0031     connect(templateHandler, &TemplateHandler::loadConfigRequested, this, &NoteDock::loadConfigFromTemplate);
0032     connect(templateHandler, &TemplateHandler::saveConfigRequested, this, &NoteDock::saveConfigAsTemplate);
0033 }
0034 
0035 void NoteDock::setNotesList(QList<Note*> list) {
0036     m_notesList = list;
0037     m_notes = list.first();
0038     setAspects(list);
0039 
0040     CONDITIONAL_LOCK_RETURN;
0041 
0042     ui.leName->setText(m_notes->name());
0043     ui.leName->setStyleSheet(QString());
0044     ui.leName->setToolTip(QString());
0045     ui.kcbBgColor->setColor(m_notes->backgroundColor());
0046     ui.kcbTextColor->setColor(m_notes->textColor());
0047     ui.kfrTextFont->setFont(m_notes->textFont());
0048 }
0049 
0050 //*************************************************************
0051 //********** SLOTs for changes triggered in NoteDock **********
0052 //*************************************************************
0053 void NoteDock::backgroundColorChanged(const QColor& color) {
0054     CONDITIONAL_LOCK_RETURN;
0055 
0056     for (auto* note : m_notesList)
0057         note->setBackgroundColor(color);
0058 }
0059 
0060 void NoteDock::textColorChanged(const QColor& color) {
0061     CONDITIONAL_LOCK_RETURN;
0062 
0063     for (auto* note : m_notesList)
0064         note->setTextColor(color);
0065 }
0066 
0067 void NoteDock::textFontChanged(const QFont& font) {
0068     CONDITIONAL_LOCK_RETURN;
0069 
0070     for (auto* note : m_notesList)
0071         note->setTextFont(font);
0072 }
0073 
0074 //*************************************************************
0075 //************************* Settings **************************
0076 //*************************************************************
0077 void NoteDock::loadConfigFromTemplate(KConfig& config) {
0078     KConfigGroup group = config.group(QStringLiteral("Notes"));
0079     ui.kcbBgColor->setColor(group.readEntry(QStringLiteral("BackgroundColor"), m_notes->backgroundColor()));
0080     ui.kcbTextColor->setColor(group.readEntry(QStringLiteral("TextColor"), m_notes->textColor()));
0081     ui.kfrTextFont->setFont(group.readEntry(QStringLiteral("TextColor"), m_notes->textFont()));
0082 }
0083 
0084 void NoteDock::saveConfigAsTemplate(KConfig& config) {
0085     KConfigGroup group = config.group(QStringLiteral("Notes"));
0086 
0087     group.writeEntry(QStringLiteral("BackgroundColor"), ui.kcbBgColor->color());
0088     group.writeEntry(QStringLiteral("TextColor"), ui.kcbTextColor->color());
0089     group.writeEntry(QStringLiteral("TextFont"), ui.kfrTextFont->font());
0090 }