diff --git a/src/commandentry.cpp b/src/commandentry.cpp index be9b9bc3e9516c4ce2751906361810c96361ccf7..a31d13a6e6e0893ca33cda1f6312871fb1200bd2 100644 --- a/src/commandentry.cpp +++ b/src/commandentry.cpp @@ -109,6 +109,8 @@ CommandEntry::CommandEntry(Worksheet* worksheet) : WorksheetEntry(worksheet), connect(m_commandItem, &WorksheetTextItem::receivedFocus, worksheet, &Worksheet::highlightItem); connect(m_promptItem, &WorksheetTextItem::drag, this, &CommandEntry::startDrag); connect(worksheet, &Worksheet::updatePrompt, this, [=]() { updatePrompt();} ); + + m_defaultDefaultTextColor = m_commandItem->defaultTextColor(); } CommandEntry::~CommandEntry() @@ -150,14 +152,23 @@ void CommandEntry::initMenus() { m_backgroundColorMenu = new QMenu(i18n("Background Color")); m_backgroundColorMenu->setIcon(QIcon::fromTheme(QLatin1String("format-fill-color"))); - QPixmap pix(16,16); - QPainter p(&pix); - for (int i=0; isetCheckable(true); - m_backgroundColorMenu->addAction(action); - } + QPixmap pix(16,16); + QPainter p(&pix); + for (int i=0; isetCheckable(true); + m_backgroundColorMenu->addAction(action); + if (i == 0) + action->setChecked(true); + } //text color m_textColorActionGroup = new QActionGroup(this); @@ -168,14 +179,22 @@ void CommandEntry::initMenus() { m_textColorMenu->setIcon(QIcon::fromTheme(QLatin1String("format-text-color"))); for (int i=0; isetCheckable(true); - m_textColorMenu->addAction(action); - } - - //font - m_fontMenu = new QMenu(i18n("Font")); + QAction* action; + if (i == 0) { + p.fillRect(pix.rect(), m_defaultDefaultTextColor); + action = new QAction(QIcon(pix), i18n("Default system color"), m_textColorActionGroup); + } else { + p.fillRect(pix.rect(), colors[i-1]); + action = new QAction(QIcon(pix), colorNames[i-1], m_textColorActionGroup); + } + action->setCheckable(true); + m_textColorMenu->addAction(action); + if (i == 0) + action->setChecked(true); + } + + //font + m_fontMenu = new QMenu(i18n("Font")); m_fontMenu->setIcon(QIcon::fromTheme(QLatin1String("preferences-desktop-font"))); QAction* action = new QAction(QIcon::fromTheme(QLatin1String("format-text-bold")), i18n("Bold")); @@ -202,6 +221,10 @@ void CommandEntry::initMenus() { connect(action, &QAction::triggered, this, &CommandEntry::fontSelectTriggered); m_fontMenu->addAction(action); + action = new QAction(QIcon::fromTheme(QLatin1String("preferences-desktop-font")), i18n("Reset Font to Default")); + connect(action, &QAction::triggered, this, &CommandEntry::resetFontTriggered); + m_fontMenu->addAction(action); + m_menusInitialized = true; } @@ -210,7 +233,13 @@ void CommandEntry::backgroundColorChanged(QAction* action) { if (index == -1 || index>=colorsCount) index = 0; - m_commandItem->setBackgroundColor(colors[index]); + if (index == 0) + { + KColorScheme scheme = KColorScheme(QPalette::Normal, KColorScheme::View); + m_commandItem->setBackgroundColor(scheme.background(KColorScheme::AlternateBackground).color()); + } + else + m_commandItem->setBackgroundColor(colors[index-1]); } void CommandEntry::textColorChanged(QAction* action) { @@ -218,7 +247,12 @@ void CommandEntry::textColorChanged(QAction* action) { if (index == -1 || index>=colorsCount) index = 0; - m_commandItem->setDefaultTextColor(colors[index]); + if (index == 0) + { + m_commandItem->setDefaultTextColor(m_defaultDefaultTextColor); + } + else + m_commandItem->setDefaultTextColor(colors[index-1]); } void CommandEntry::fontBoldTriggered() @@ -229,6 +263,11 @@ void CommandEntry::fontBoldTriggered() m_commandItem->setFont(font); } +void CommandEntry::resetFontTriggered() +{ + m_commandItem->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); +} + void CommandEntry::fontItalicTriggered() { QAction* action = static_cast(QObject::sender()); @@ -440,20 +479,27 @@ void CommandEntry::setContent(const QDomElement& content, const KZip& file) { //text color QDomElement colorElem = textElem.firstChildElement(QLatin1String("Color")); - QColor color; - color.setRed(colorElem.attribute(QLatin1String("red")).toInt()); - color.setGreen(colorElem.attribute(QLatin1String("green")).toInt()); - color.setBlue(colorElem.attribute(QLatin1String("blue")).toInt()); - m_commandItem->setDefaultTextColor(color); + if (!colorElem.isNull() && !colorElem.hasAttribute(QLatin1String("compatibility"))) + { + m_defaultDefaultTextColor = m_commandItem->defaultTextColor(); + QColor color; + color.setRed(colorElem.attribute(QLatin1String("red")).toInt()); + color.setGreen(colorElem.attribute(QLatin1String("green")).toInt()); + color.setBlue(colorElem.attribute(QLatin1String("blue")).toInt()); + m_commandItem->setDefaultTextColor(color); + } //font properties QDomElement fontElem = textElem.firstChildElement(QLatin1String("Font")); - QFont font; - font.setFamily(fontElem.attribute(QLatin1String("family"))); - font.setPointSize(fontElem.attribute(QLatin1String("pointSize")).toInt()); - font.setWeight(fontElem.attribute(QLatin1String("weight")).toInt()); - font.setItalic(fontElem.attribute(QLatin1String("italic")).toInt()); - m_commandItem->setFont(font); + if (!fontElem.isNull() && !fontElem.hasAttribute(QLatin1String("compatibility"))) + { + QFont font; + font.setFamily(fontElem.attribute(QLatin1String("family"))); + font.setPointSize(fontElem.attribute(QLatin1String("pointSize")).toInt()); + font.setWeight(fontElem.attribute(QLatin1String("weight")).toInt()); + font.setItalic(fontElem.attribute(QLatin1String("italic")).toInt()); + m_commandItem->setFont(font); + } } setExpression(expr); @@ -636,12 +682,17 @@ QDomElement CommandEntry::toXml(QDomDocument& doc, KZip* archive) //save the text properties if they differ from default values const QFont& font = m_commandItem->font(); - if (font != QFontDatabase::systemFont(QFontDatabase::FixedFont)) + const QColor& textColor = m_commandItem->defaultTextColor(); + bool isFontNotDefault = font != QFontDatabase::systemFont(QFontDatabase::FixedFont); + bool isTextColorNotDefault = textColor != m_defaultDefaultTextColor; + if (isFontNotDefault || isTextColorNotDefault) { QDomElement textElem = doc.createElement(QLatin1String("Text")); //font properties QDomElement fontElem = doc.createElement(QLatin1String("Font")); + if (!isFontNotDefault) + fontElem.setAttribute(QLatin1String("compatibility"), true); fontElem.setAttribute(QLatin1String("family"), font.family()); fontElem.setAttribute(QLatin1String("pointSize"), QString::number(font.pointSize())); fontElem.setAttribute(QLatin1String("weight"), QString::number(font.weight())); @@ -649,8 +700,9 @@ QDomElement CommandEntry::toXml(QDomDocument& doc, KZip* archive) textElem.appendChild(fontElem); //text color - const QColor& textColor = m_commandItem->defaultTextColor(); QDomElement colorElem = doc.createElement( QLatin1String("Color") ); + if (!isTextColorNotDefault) + colorElem.setAttribute(QLatin1String("compatibility"), true); colorElem.setAttribute(QLatin1String("red"), QString::number(textColor.red())); colorElem.setAttribute(QLatin1String("green"), QString::number(textColor.green())); colorElem.setAttribute(QLatin1String("blue"), QString::number(textColor.blue())); diff --git a/src/commandentry.h b/src/commandentry.h index 4cbee2002c042e3fd9d3f6a6a3f59e8a96d42cd7..0a5c948276d53da4d11382ea8c18b0b1cac7a4b5 100644 --- a/src/commandentry.h +++ b/src/commandentry.h @@ -151,6 +151,7 @@ class CommandEntry : public WorksheetEntry void fontIncreaseTriggered(); void fontDecreaseTriggered(); void fontSelectTriggered(); + void resetFontTriggered(); void animatePromptItem(); void setMidPrompt(); @@ -180,6 +181,7 @@ class CommandEntry : public WorksheetEntry QActionGroup* m_backgroundColorActionGroup; QMenu* m_backgroundColorMenu; QActionGroup* m_textColorActionGroup; + QColor m_defaultDefaultTextColor; QMenu* m_textColorMenu; QMenu* m_fontMenu; };