initial commit for llm chat tab in sidebar

This commit is contained in:
2026-08-20 00:27:48 +02:00
parent d3e61efd86
commit 47bab21e22
22 changed files with 2085 additions and 9 deletions
+1
View File
@@ -16,6 +16,7 @@ qml_module(ZShell-config
dock.hpp
general.hpp
launcher.hpp
llm.hpp
lock.hpp
notifs.hpp
osd.hpp
+12 -1
View File
@@ -9,6 +9,7 @@
#include "dock.hpp"
#include "general.hpp"
#include "launcher.hpp"
#include "llm.hpp"
#include "lock.hpp"
#include "notifs.hpp"
#include "osd.hpp"
@@ -33,6 +34,8 @@
namespace ZShell::config {
Config* Config::s_instance = nullptr;
Config::Config(QObject* parent)
: ConfigObject(parent)
, m_appearance(new Appearance(this))
@@ -44,6 +47,7 @@ Config::Config(QObject* parent)
, m_dock(new Dock(this))
, m_general(new General(this))
, m_launcher(new Launcher(this))
, m_llm(new Llm(this))
, m_lock(new Lock(this))
, m_notifs(new Notifs(this))
, m_osd(new Osd(this))
@@ -51,6 +55,7 @@ Config::Config(QObject* parent)
, m_services(new Services(this))
, m_sidebar(new Sidebar(this))
, m_utilities(new Utilities(this)) {
s_instance = this;
connect(this, &ConfigObject::propertiesChanged, this, &Config::scheduleSave);
m_saveTimer.setSingleShot(true);
@@ -81,8 +86,14 @@ Config::Config(QObject* parent)
m_firstLoadDone = true;
}
Config* Config::instance() {
return s_instance;
}
Config* Config::create(QQmlEngine*, QJSEngine*) {
return new Config();
if (!s_instance)
s_instance = new Config();
return s_instance;
}
QString Config::filePath() const {
+6
View File
@@ -24,6 +24,7 @@ class Dashboard;
class Dock;
class General;
class Launcher;
class Llm;
class Lock;
class Notifs;
class Osd;
@@ -46,6 +47,7 @@ class Config : public ConfigObject {
Q_MOC_INCLUDE("dock.hpp")
Q_MOC_INCLUDE("general.hpp")
Q_MOC_INCLUDE("launcher.hpp")
Q_MOC_INCLUDE("llm.hpp")
Q_MOC_INCLUDE("lock.hpp")
Q_MOC_INCLUDE("notifs.hpp")
Q_MOC_INCLUDE("osd.hpp")
@@ -63,6 +65,7 @@ class Config : public ConfigObject {
CONFIG_SUBOBJECT(Dock, dock)
CONFIG_SUBOBJECT(General, general)
CONFIG_SUBOBJECT(Launcher, launcher)
CONFIG_SUBOBJECT(Llm, llm)
CONFIG_SUBOBJECT(Lock, lock)
CONFIG_SUBOBJECT(Notifs, notifs)
CONFIG_SUBOBJECT(Osd, osd)
@@ -74,6 +77,7 @@ class Config : public ConfigObject {
public:
explicit Config(QObject* parent = nullptr);
static Config* create(QQmlEngine*, QJSEngine*);
[[nodiscard]] static Config* instance();
Q_INVOKABLE void load();
Q_INVOKABLE void saveNow();
@@ -103,6 +107,8 @@ class Config : public ConfigObject {
bool m_loading = false;
bool m_firstLoadDone = false;
QFuture<void> m_loadFuture;
static Config* s_instance;
};
} // namespace ZShell::config
+19
View File
@@ -0,0 +1,19 @@
#pragma once
#include "configobject.hpp"
#include <qqmlintegration.h>
namespace ZShell::config {
class Llm : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CFG_PROPERTY(QString, endpoint, "http://localhost:8080")
CFG_PROPERTY(QString, model, "")
CFG_PROPERTY(double, temperature, 0.7)
public:
explicit Llm(QObject* parent = nullptr) : ConfigObject(parent) {}
};
} // namespace ZShell::config