Fix Qt-only build without KF5

The BUILD_WITH_KF5 option was checked with DEFINED, so passing -DBUILD_WITH_KF5=OFF still entered the KF5 setup path.

Skip the KF5 setup when disabled and provide small Qt-only replacements for the KDE color widgets used by .ui files in that build mode.

Assisted-by: pi coding agent / Mika (OpenAI GPT-5.5)
This commit is contained in:
Gerhard Schwanzer
2026-07-05 11:10:44 +02:00
parent 3c8ba1b1ca
commit d0cea474a6
7 changed files with 223 additions and 1 deletions
+8
View File
@@ -148,6 +148,14 @@ target_include_directories(
${QET_DIR}/sources/svg ${QET_DIR}/sources/svg
) )
if(NOT BUILD_WITH_KF5)
target_include_directories(
${PROJECT_NAME}
PRIVATE
${QET_DIR}/sources/ui/nokde
)
endif()
install(TARGETS ${PROJECT_NAME}) install(TARGETS ${PROJECT_NAME})
if (NOT MINGW) if (NOT MINGW)
+1 -1
View File
@@ -16,7 +16,7 @@
message(" - fetch_kdeaddons") message(" - fetch_kdeaddons")
if(DEFINED BUILD_WITH_KF5) if(BUILD_WITH_KF5)
Include(FetchContent) Include(FetchContent)
option(BUILD_KF5 "Build KF5 libraries, use system ones otherwise" YES) option(BUILD_KF5 "Build KF5 libraries, use system ones otherwise" YES)
+9
View File
@@ -724,6 +724,15 @@ set(QET_SRC_FILES
${QET_DIR}/sources/xml/terminalstriplayoutpatternxml.h ${QET_DIR}/sources/xml/terminalstriplayoutpatternxml.h
) )
if(NOT BUILD_WITH_KF5)
list(APPEND QET_SRC_FILES
${QET_DIR}/sources/ui/nokde/kcolorbutton.cpp
${QET_DIR}/sources/ui/nokde/kcolorbutton.h
${QET_DIR}/sources/ui/nokde/kcolorcombo.cpp
${QET_DIR}/sources/ui/nokde/kcolorcombo.h
)
endif()
set(TS_FILES set(TS_FILES
${QET_DIR}/lang/qet_ar.ts ${QET_DIR}/lang/qet_ar.ts
${QET_DIR}/lang/qet_ca.ts ${QET_DIR}/lang/qet_ca.ts
+70
View File
@@ -0,0 +1,70 @@
/*
Copyright 2006-2026 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "kcolorbutton.h"
#include <QColorDialog>
#include <QPalette>
namespace {
QColor fallbackColor()
{
return QPalette{}.color(QPalette::Button);
}
}
KColorButton::KColorButton(QWidget *parent) :
QPushButton{parent},
m_color{fallbackColor()}
{
connect(this, &QPushButton::clicked, this, &KColorButton::chooseColor);
updateButton();
}
QColor KColorButton::color() const
{
return m_color;
}
void KColorButton::setColor(const QColor &color)
{
m_color = color.isValid() ? color : fallbackColor();
updateButton();
}
void KColorButton::chooseColor()
{
const auto selected = QColorDialog::getColor(m_color, this);
if (!selected.isValid() || selected == m_color) {
return;
}
m_color = selected;
updateButton();
emit changed(m_color);
}
void KColorButton::updateButton()
{
setText(m_color.name());
auto pal = palette();
pal.setColor(QPalette::Button, m_color);
setAutoFillBackground(true);
setPalette(pal);
update();
}
+48
View File
@@ -0,0 +1,48 @@
/*
Copyright 2006-2026 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef QET_KCOLORBUTTON_H
#define QET_KCOLORBUTTON_H
#include <QColor>
#include <QPushButton>
class KColorButton : public QPushButton
{
Q_OBJECT
public:
explicit KColorButton(QWidget *parent = nullptr);
QColor color() const;
public slots:
void setColor(const QColor &color);
signals:
void changed(const QColor &color);
private slots:
void chooseColor();
private:
void updateButton();
QColor m_color;
};
#endif // QET_KCOLORBUTTON_H
+49
View File
@@ -0,0 +1,49 @@
/*
Copyright 2006-2026 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "kcolorcombo.h"
#include <QVariant>
KColorCombo::KColorCombo(QWidget *parent) :
QComboBox{parent}
{
connect(
this,
QOverload<int>::of(&QComboBox::activated),
this,
[this](int index) {
emit activated(itemData(index).value<QColor>());
});
}
void KColorCombo::setColors(const QList<QColor> &colors)
{
clear();
for (const auto &color : colors) {
addItem(color.name(), color);
}
}
QColor KColorCombo::color(int index) const
{
if (index < 0 || index >= count()) {
return {};
}
return itemData(index).value<QColor>();
}
+38
View File
@@ -0,0 +1,38 @@
/*
Copyright 2006-2026 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef QET_KCOLORCOMBO_H
#define QET_KCOLORCOMBO_H
#include <QColor>
#include <QComboBox>
class KColorCombo : public QComboBox
{
Q_OBJECT
public:
explicit KColorCombo(QWidget *parent = nullptr);
void setColors(const QList<QColor> &colors);
QColor color(int index) const;
signals:
void activated(const QColor &color);
};
#endif // QET_KCOLORCOMBO_H