summaryrefslogtreecommitdiffstats
path: root/tests/manual/examples/widgets/widgets/stylesheet/stylesheeteditor.cpp
blob: 84fda79a16135b49ee3b6c8c87c8710fa20cedbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

#include "stylesheeteditor.h"

#include <QFile>
#include <QRegularExpression>
#include <QStyleFactory>

StyleSheetEditor::StyleSheetEditor(QWidget *parent)
    : QDialog(parent)
{
    ui.setupUi(this);

    connect(ui.styleCombo, &QComboBox::textActivated, this, &StyleSheetEditor::setStyleName);
    connect(ui.styleSheetCombo, &QComboBox::textActivated, this, &StyleSheetEditor::setStyleSheetName);
    connect(ui.styleTextEdit, &QTextEdit::textChanged, this, &StyleSheetEditor::setModified);
    connect(ui.applyButton, &QAbstractButton::clicked, this, &StyleSheetEditor::apply);

    QRegularExpression regExp("^.(.*)\\+?Style$");
    QString defaultStyle = QApplication::style()->metaObject()->className();
    QRegularExpressionMatch match = regExp.match(defaultStyle);

    if (match.hasMatch())
        defaultStyle = match.captured(1);

    ui.styleCombo->addItems(QStyleFactory::keys());
    ui.styleCombo->setCurrentIndex(ui.styleCombo->findText(defaultStyle, Qt::MatchContains));
    ui.styleSheetCombo->setCurrentIndex(ui.styleSheetCombo->findText("Coffee"));
    loadStyleSheet("Coffee");
}

void StyleSheetEditor::setStyleName(const QString &styleName)
{
    qApp->setStyle(styleName);
    ui.applyButton->setEnabled(false);
}

void StyleSheetEditor::setStyleSheetName(const QString &sheetName)
{
    loadStyleSheet(sheetName);
}

void StyleSheetEditor::setModified()
{
    ui.applyButton->setEnabled(true);
}

void StyleSheetEditor::apply()
{
    qApp->setStyleSheet(ui.styleTextEdit->toPlainText());
    ui.applyButton->setEnabled(false);
}

void StyleSheetEditor::loadStyleSheet(const QString &sheetName)
{
    QFile file(":/qss/" + sheetName.toLower() + ".qss");
    file.open(QFile::ReadOnly);
    QString styleSheet = QString::fromLatin1(file.readAll());

    ui.styleTextEdit->setPlainText(styleSheet);
    qApp->setStyleSheet(styleSheet);
    ui.applyButton->setEnabled(false);
}