mirror of
https://github.com/fergalmoran/flameshot.git
synced 2026-01-02 15:17:41 +00:00
* Added missing braces * applied some clang modernize * clarified auto pointer * clang-tidy
175 lines
5.6 KiB
C++
175 lines
5.6 KiB
C++
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
// SPDX-FileCopyrightText: 2017-2019 Alejandro Sirgo Rica & Contributors
|
|
|
|
#include "textconfig.h"
|
|
#include "src/utils/colorutils.h"
|
|
#include "src/utils/confighandler.h"
|
|
#include "src/utils/pathinfo.h"
|
|
#include <QComboBox>
|
|
#include <QFontDatabase>
|
|
#include <QHBoxLayout>
|
|
#include <QPushButton>
|
|
|
|
TextConfig::TextConfig(QWidget* parent)
|
|
: QWidget(parent)
|
|
, m_layout(nullptr)
|
|
, m_fontsCB(nullptr)
|
|
, m_strikeOutButton(nullptr)
|
|
, m_underlineButton(nullptr)
|
|
, m_weightButton(nullptr)
|
|
, m_italicButton(nullptr)
|
|
, m_leftAlignButton(nullptr)
|
|
, m_centerAlignButton(nullptr)
|
|
, m_rightAlignButton(nullptr)
|
|
{
|
|
m_layout = new QVBoxLayout(this);
|
|
|
|
QFontDatabase fontDB;
|
|
m_fontsCB = new QComboBox();
|
|
connect(m_fontsCB,
|
|
&QComboBox::currentTextChanged,
|
|
this,
|
|
&TextConfig::fontFamilyChanged);
|
|
m_fontsCB->addItems(fontDB.families());
|
|
setFontFamily(ConfigHandler().fontFamily());
|
|
|
|
QString iconPrefix = ColorUtils::colorIsDark(palette().windowText().color())
|
|
? PathInfo::blackIconPath()
|
|
: PathInfo::whiteIconPath();
|
|
|
|
m_strikeOutButton = new QPushButton(
|
|
QIcon(iconPrefix + "format_strikethrough.svg"), QLatin1String(""));
|
|
m_strikeOutButton->setCheckable(true);
|
|
connect(m_strikeOutButton,
|
|
&QPushButton::clicked,
|
|
this,
|
|
&TextConfig::fontStrikeOutChanged);
|
|
m_strikeOutButton->setToolTip(tr("StrikeOut"));
|
|
|
|
m_underlineButton = new QPushButton(
|
|
QIcon(iconPrefix + "format_underlined.svg"), QLatin1String(""));
|
|
m_underlineButton->setCheckable(true);
|
|
connect(m_underlineButton,
|
|
&QPushButton::clicked,
|
|
this,
|
|
&TextConfig::fontUnderlineChanged);
|
|
m_underlineButton->setToolTip(tr("Underline"));
|
|
|
|
m_weightButton =
|
|
new QPushButton(QIcon(iconPrefix + "format_bold.svg"), QLatin1String(""));
|
|
m_weightButton->setCheckable(true);
|
|
connect(m_weightButton,
|
|
&QPushButton::clicked,
|
|
this,
|
|
&TextConfig::weightButtonPressed);
|
|
m_weightButton->setToolTip(tr("Bold"));
|
|
|
|
m_italicButton = new QPushButton(QIcon(iconPrefix + "format_italic.svg"),
|
|
QLatin1String(""));
|
|
m_italicButton->setCheckable(true);
|
|
connect(m_italicButton,
|
|
&QPushButton::clicked,
|
|
this,
|
|
&TextConfig::fontItalicChanged);
|
|
m_italicButton->setToolTip(tr("Italic"));
|
|
auto* modifiersLayout = new QHBoxLayout();
|
|
|
|
m_leftAlignButton =
|
|
new QPushButton(QIcon(iconPrefix + "leftalign.svg"), QLatin1String(""));
|
|
m_leftAlignButton->setCheckable(true);
|
|
m_leftAlignButton->setAutoExclusive(true);
|
|
connect(m_leftAlignButton, &QPushButton::clicked, this, [this] {
|
|
alignmentChanged(Qt::AlignLeft);
|
|
});
|
|
m_leftAlignButton->setToolTip(tr("Left Align"));
|
|
|
|
m_centerAlignButton =
|
|
new QPushButton(QIcon(iconPrefix + "centeralign.svg"), QLatin1String(""));
|
|
m_centerAlignButton->setCheckable(true);
|
|
m_centerAlignButton->setAutoExclusive(true);
|
|
connect(m_centerAlignButton, &QPushButton::clicked, this, [this] {
|
|
alignmentChanged(Qt::AlignCenter);
|
|
});
|
|
m_centerAlignButton->setToolTip(tr("Center Align"));
|
|
|
|
m_rightAlignButton =
|
|
new QPushButton(QIcon(iconPrefix + "rightalign.svg"), QLatin1String(""));
|
|
m_rightAlignButton->setCheckable(true);
|
|
m_rightAlignButton->setAutoExclusive(true);
|
|
connect(m_rightAlignButton, &QPushButton::clicked, this, [this] {
|
|
alignmentChanged(Qt::AlignRight);
|
|
});
|
|
m_rightAlignButton->setToolTip(tr("Right Align"));
|
|
|
|
auto* alignmentLayout = new QHBoxLayout();
|
|
alignmentLayout->addWidget(m_leftAlignButton);
|
|
alignmentLayout->addWidget(m_centerAlignButton);
|
|
alignmentLayout->addWidget(m_rightAlignButton);
|
|
|
|
m_layout->addWidget(m_fontsCB);
|
|
modifiersLayout->addWidget(m_strikeOutButton);
|
|
modifiersLayout->addWidget(m_underlineButton);
|
|
modifiersLayout->addWidget(m_weightButton);
|
|
modifiersLayout->addWidget(m_italicButton);
|
|
m_layout->addLayout(modifiersLayout);
|
|
m_layout->addLayout(alignmentLayout);
|
|
}
|
|
|
|
void TextConfig::setFontFamily(const QString& fontFamily)
|
|
{
|
|
m_fontsCB->setCurrentIndex(
|
|
m_fontsCB->findText(fontFamily.isEmpty() ? font().family() : fontFamily));
|
|
}
|
|
|
|
void TextConfig::setUnderline(const bool u)
|
|
{
|
|
m_underlineButton->setChecked(u);
|
|
}
|
|
|
|
void TextConfig::setStrikeOut(const bool s)
|
|
{
|
|
m_strikeOutButton->setChecked(s);
|
|
}
|
|
|
|
void TextConfig::setWeight(const int w)
|
|
{
|
|
m_weightButton->setChecked(static_cast<QFont::Weight>(w) == QFont::Bold);
|
|
}
|
|
|
|
void TextConfig::setItalic(const bool i)
|
|
{
|
|
m_italicButton->setChecked(i);
|
|
}
|
|
|
|
void TextConfig::weightButtonPressed(const bool w)
|
|
{
|
|
if (w) {
|
|
emit fontWeightChanged(QFont::Bold);
|
|
} else {
|
|
emit fontWeightChanged(QFont::Normal);
|
|
}
|
|
}
|
|
|
|
void TextConfig::setTextAlignment(Qt::AlignmentFlag alignment)
|
|
{
|
|
switch (alignment) {
|
|
case (Qt::AlignCenter):
|
|
m_leftAlignButton->setChecked(false);
|
|
m_centerAlignButton->setChecked(true);
|
|
m_rightAlignButton->setChecked(false);
|
|
break;
|
|
case (Qt::AlignRight):
|
|
m_leftAlignButton->setChecked(false);
|
|
m_centerAlignButton->setChecked(false);
|
|
m_rightAlignButton->setChecked(true);
|
|
break;
|
|
case (Qt::AlignLeft):
|
|
default:
|
|
m_leftAlignButton->setChecked(true);
|
|
m_centerAlignButton->setChecked(false);
|
|
m_rightAlignButton->setChecked(false);
|
|
break;
|
|
}
|
|
emit alignmentChanged(alignment);
|
|
}
|