Skip to content
Draft

Qxevent #1069

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
25a87fe
Unify application version and db version
fvacek Jan 18, 2026
28a0999
Multi-course classes #1086
fvacek Jan 23, 2026
c96eb18
Merge branch 'main' into multicourse-classes
fvacek Jan 23, 2026
83edcb4
Add "Set course in selected rows" context menu
fvacek Jan 23, 2026
e1f6718
Add completer to courses combo
fvacek Jan 24, 2026
775f4a0
Add QCompleter also to context popup menu combo
fvacek Jan 25, 2026
270bdbb
Fix Card readout - doesn't use custom course at all.
fvacek Jan 30, 2026
a82e0c9
Fix SQL error on course to class assignment
fvacek Jan 30, 2026
9f76585
Add libshv dependency to enable QxEvent service implementation
fvacek Nov 3, 2025
848ea9d
Rename QxClientService to QxEventService
fvacek Nov 8, 2025
844d9e4
Fix DesktopUtils::moveRectToVisibleDesktopScreen
fvacek Nov 9, 2025
aac947a
Update libshv
fvacek Nov 9, 2025
833622e
Add QX event SHV nodes
fvacek Nov 9, 2025
e789281
Remove unused shv odes
fvacek Nov 9, 2025
b5e5d2a
QX SQL API node implemented
fvacek Nov 9, 2025
074f053
QxSQL API in QE
fvacek Nov 10, 2025
e4c5d38
Do not reload whole row on qxSqlApi update recchng
fvacek Nov 12, 2025
bb2da88
Recchng is emitted on SqlTableModel::postRow
fvacek Nov 17, 2025
4902f86
Fix CardReader model id column name
fvacek Nov 23, 2025
1896638
Change default SHV mount point
fvacek Nov 30, 2025
7ff7af0
Enable QF_WITH_LIBSHV option in CMake action
fvacek Dec 19, 2025
19d8499
Update Qt version to 6.10 in workflow
fvacek Dec 19, 2025
1a773d8
Remove libqsqloci.so from SQL drivers
fvacek Dec 19, 2025
40ee83f
Upgrade Qt version from 6.8 to 6.10 in windows workflow
fvacek Dec 19, 2025
1e1fb18
Update Qt version to 6.10.1 in linter action
fvacek Dec 19, 2025
760e61d
Make service status text expandable
fvacek Dec 23, 2025
59416fb
Rebased on multi-course
fvacek Jan 30, 2026
89d0020
Update CI linter ubuntu version
fvacek Feb 2, 2026
b3c90bb
Fix QxService login procedure
fvacek Feb 2, 2026
006dcd4
Fix CI linter
fvacek Feb 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Checks:
-cppcoreguidelines-pro-type-union-access,
-cppcoreguidelines-pro-type-vararg,
-cppcoreguidelines-special-member-functions,
-cppcoreguidelines-use-enum-class,
-hicpp-avoid-c-arrays,
-hicpp-avoid-goto,
-hicpp-braces-around-statements,
Expand Down
1 change: 1 addition & 0 deletions .github/actions/appimage/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ runs:
rm ${{ env.QT_ROOT_DIR }}/plugins/sqldrivers/libqsqlmimer.so
rm ${{ env.QT_ROOT_DIR }}/plugins/sqldrivers/libqsqlmysql.so
rm ${{ env.QT_ROOT_DIR }}/plugins/sqldrivers/libqsqlodbc.so
rm ${{ env.QT_ROOT_DIR }}/plugins/sqldrivers/libqsqloci.so
shell: bash

- name: Create AppImage
Expand Down
1 change: 1 addition & 0 deletions .github/actions/cmake/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ runs:
-B '${{github.workspace}}/build' \
-DCMAKE_BUILD_TYPE=Release \
-DQF_BUILD_QML_PLUGINS=ON \
-DQF_WITH_LIBSHV=ON \
-DBUILD_TESTING=OFF \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DUSE_QT6=${{ inputs.use_qt6 }} \
Expand Down
4 changes: 2 additions & 2 deletions .github/actions/run-linter/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ runs:
- name: Setup CMake
uses: ./.github/actions/cmake
with:
qt_version: 6.8.3
qt_version: 6.10.1
use_qt6: ON
modules: qtserialport qtmultimedia
additional_cmake_args: -DCMAKE_GLOBAL_AUTOGEN_TARGET=ON -DCMAKE_AUTOGEN_ORIGIN_DEPENDS=OFF
Expand All @@ -20,7 +20,7 @@ runs:
- uses: mjp41/workaround8649@c8550b715ccdc17f89c8d5c28d7a48eeff9c94a8
if: runner.os == 'Linux'
with:
os: ubuntu-latest
os: ubuntu-24.04

- name: Build autogenerated stuff
shell: bash
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/appimage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:

jobs:
ubuntu-qe3:
name: Qt 6.8 / Ubuntu 22.04
name: Qt 6.10 / Ubuntu 22.04
runs-on: ubuntu-22.04
steps:
- name: Clone the repository
Expand All @@ -23,7 +23,7 @@ jobs:
- name: Setup CMake
uses: ./.github/actions/cmake
with:
qt_version: 6.8.3
qt_version: 6.10.1
use_qt6: ON
modules: qtserialport qtmultimedia
additional_cmake_args: -DCMAKE_INSTALL_PREFIX='${{ github.workspace }}/install/usr'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/installer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

jobs:
windows:
name: Qt 6.8 / Windows
name: Qt 6.10 / Windows
runs-on: windows-2025
steps:
- name: Clone the repository
Expand Down Expand Up @@ -62,7 +62,7 @@ jobs:
- name: Setup CMake
uses: ./.github/actions/cmake
with:
qt_version: 6.8.3
qt_version: 6.10.1
qt_arch: win64_mingw
use_qt6: ON
modules: qtserialport qtmultimedia
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ on:

jobs:
clang-tidy:
name: clang-tidy / Ubuntu 22.04
runs-on: ubuntu-22.04
name: clang-tidy / Ubuntu 24.04
runs-on: ubuntu-24.04
env:
CC: clang
CXX: clang++
Expand All @@ -25,8 +25,8 @@ jobs:
lint_program_with_args: clang-tidy --quiet --warnings-as-errors=*

clazy:
name: clazy / Ubuntu 22.04
runs-on: ubuntu-22.04
name: clazy / Ubuntu 24.04
runs-on: ubuntu-24.04
env:
CC: clang
CXX: clang++
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
[submodule "3rdparty/necrolog"]
path = 3rdparty/necrolog
url = https://github.com/fvacek/necrolog.git
[submodule "3rdparty/libshv"]
path = 3rdparty/libshv
url = https://github.com/silicon-heaven/libshv.git
1 change: 1 addition & 0 deletions 3rdparty/libshv
Submodule libshv added at f77c05
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
cmake_minimum_required(VERSION 3.18.4)

set(QF_BUILD_QML_PLUGINS ON CACHE BOOL "Build with QML Plugins support")
set(QF_WITH_LIBSHV OFF CACHE BOOL "Build with libshv")

project(quickbox LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 20)
Expand All @@ -26,6 +27,9 @@ endif (WIN32)
if (NOT TARGET libnecrolog)
add_subdirectory(3rdparty/necrolog)
endif()
if (QF_WITH_LIBSHV)
add_subdirectory(3rdparty/libshv)
endif()

set(USE_QT6 ON)
find_package(Qt6 REQUIRED COMPONENTS Core Widgets Gui Sql Qml Xml LinguistTools PrintSupport Svg SerialPort Multimedia Network)
Expand Down
1 change: 1 addition & 0 deletions libqf/libqfcore/include/qf/core/sql/qxrecchng.h
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "../../../../src/sql/qxrecchng.h"
17 changes: 17 additions & 0 deletions libqf/libqfcore/src/sql/qxrecchng.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#pragma once

#include "../core/coreglobal.h"

namespace qf::core::sql {

enum class QxRecOp { Insert, Update, Delete, };

struct QFCORE_DECL_EXPORT QxRecChng
{
QString table;
int64_t id;
QVariant record;
QxRecOp op;
};

}
4 changes: 3 additions & 1 deletion libqf/libqfcore/src/utils/table.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1310,7 +1310,8 @@ QVariant Table::sumValue(int field_ix) const
return ret;
}

static void setDomElementText(QDomDocument &owner_doc, QDomElement &el, const QString &str)
namespace {
void setDomElementText(QDomDocument &owner_doc, QDomElement &el, const QString &str)
{
QDomNode nd = el.firstChild();
QDomText el_txt = nd.toText();
Expand All @@ -1322,6 +1323,7 @@ static void setDomElementText(QDomDocument &owner_doc, QDomElement &el, const QS
el_txt.setData(str);
}
}
}

QDomElement Table::toHtmlElement(QDomDocument &owner_doc, const QString & col_names, TextExportOptions opts) const
{
Expand Down
2 changes: 1 addition & 1 deletion libqf/libqfgui/src/framework/datadialogwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class QFGUI_DECL_EXPORT DataDialogWidget : public DialogWidget

qf::gui::model::DataDocument* dataDocument(bool throw_exc = qf::core::Exception::Throw);

Q_SLOT virtual bool load(const QVariant &id = QVariant(), int mode = qf::gui::model::DataDocument::ModeEdit);
virtual bool load(const QVariant &id = QVariant(), int mode = qf::gui::model::DataDocument::ModeEdit);

bool acceptDialogDone(int result) Q_DECL_OVERRIDE;

Expand Down
15 changes: 5 additions & 10 deletions libqf/libqfgui/src/framework/dialogwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,21 @@

using namespace qf::gui::framework;

DialogWidget::DialogWidget(QWidget *parent) :
Super(parent), IPersistentSettings(this)
DialogWidget::DialogWidget(QWidget *parent)
: Super(parent)
, IPersistentSettings(this)
{
}

DialogWidget::~DialogWidget()
= default;
DialogWidget::~DialogWidget() = default;

bool DialogWidget::acceptDialogDone(int result)
{
qfLogFuncFrame();
Q_UNUSED(result);
return true;
}
/*
QVariant DialogWidget::acceptDialogDone_qml(const QVariant &result)
{
return acceptDialogDone(result.toBool());
}
*/

void DialogWidget::settleDownInDialog_qml(const QVariant &dlg)
{
auto *o = dlg.value<QObject*>();
Expand Down
2 changes: 1 addition & 1 deletion libqf/libqfgui/src/framework/dialogwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class QFGUI_DECL_EXPORT DialogWidget : public Frame, public IPersistentSettings
typedef Frame Super;
public:
explicit DialogWidget(QWidget *parent = nullptr);
~DialogWidget() Q_DECL_OVERRIDE;
~DialogWidget() override;

QF_PROPERTY_IMPL(QString, t, T, itle)
QF_PROPERTY_IMPL(QString, i, I, conSource)
Expand Down
23 changes: 9 additions & 14 deletions libqf/libqfgui/src/framework/ipersistentsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ static void callMethodRecursively(QObject *obj, const char *method_name)
QMetaMethod mm = obj->metaObject()->method(ix);
mm.invoke(obj);
}
Q_FOREACH(auto *o, obj->children()) {
for (auto *o : obj->children()) {
//static int level = 0;
//level++;
//QString indent = QString(level, ' ');
Expand Down Expand Up @@ -103,25 +103,20 @@ QString IPersistentSettings::rawPersistentSettingsPath()
QString persistent_id = persistentSettingsId();
QStringList raw_path;
if(!persistent_id.isEmpty()) {
for(QObject *obj=m_controlledObject->parent(); obj!=nullptr; obj=obj->parent()) {
for(QObject* obj = m_controlledObject->parent(); obj != nullptr; obj = obj->parent()) {
auto *ps = dynamic_cast<IPersistentSettings*>(obj);
if(ps) {
QString pp = ps->rawPersistentSettingsPath();
if(!pp.isEmpty())
if(!pp.isEmpty()) {
raw_path.insert(0, pp);
//qfWarning() << "reading property 'persistentSettingsId' error" << obj << "casted to IPersistentSettings" << ps;
//qfWarning() << "\tcorrect value should be:" << parent_id;
}
break;
}
QVariant vid = obj->property("persistentSettingsId");
QString parent_id = vid.toString();
if(!parent_id.isEmpty()) {
raw_path.insert(0, parent_id);
}

// reading property using QQmlProperty is crashing my app Qt 5.3.1 commit a83826dad0f62d7a96f5a6093240e4c8f7f2e06e
//QQmlProperty p(obj, "persistentSettingsId");
//QVariant v2 = p.read();
QVariant vid = obj->property("persistentSettingsId");
QString parent_id = vid.toString();
if(!parent_id.isEmpty()) {
raw_path.insert(0, parent_id);
}
}
raw_path.append(persistent_id);
}
Expand Down
8 changes: 3 additions & 5 deletions libqf/libqfgui/src/model/sqldatadocument.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@
#include "datadocument.h"
#include "sqltablemodel.h"

namespace qf {
namespace gui {
namespace model {
namespace qf::gui::model {

class QFGUI_DECL_EXPORT SqlDataDocument : public DataDocument
{
Expand All @@ -21,7 +19,7 @@ class QFGUI_DECL_EXPORT SqlDataDocument : public DataDocument
qf::core::sql::QueryBuilder queryBuilder();
void setQueryBuilder(const qf::core::sql::QueryBuilder &qb);
protected:
SqlTableModel* createModel(QObject *parent) Q_DECL_OVERRIDE;
SqlTableModel* createModel(QObject *parent) override;

///! load model persistent storage via model
bool loadData() Q_DECL_OVERRIDE;
Expand All @@ -35,5 +33,5 @@ class QFGUI_DECL_EXPORT SqlDataDocument : public DataDocument
*/
};

}}}
}

Loading
Loading