qt-chat-app

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 15f6540d7f1794fcadeb849ffa4030141b857f5b
parent d922690684b3ef221b21d362d1b2e1949319cdac
Author: Silas Brack <silasbrack@gmail.com>
Date:   Sat, 27 Dec 2025 21:40:19 +0100

Migrate to Qt6

Diffstat:
MCMakeLists.txt | 8++++----
Mderivation_demo.nix | 8++++----
Mflake.nix | 10+++++-----
Mmain.qml | 4++--
Mnetworkmanager.cpp | 2+-
Mqml/components/AttachmentPreview.qml | 4++--
Mqml/components/Avatar.qml | 20++------------------
Mqml/components/ChatListItem.qml | 4++--
Mqml/components/MessageBubble.qml | 4++--
Mqml/components/MessageInput.qml | 4++--
Mqml/components/TopBar.qml | 4++--
Mqml/models/ChatListModel.qml | 2+-
Mqml/models/MessageCache.qml | 2+-
Mqml/models/MessageListModel.qml | 2+-
Mqml/styles/TelegramStyle.qml | 2+-
Mqml/views/ChatListView.qml | 4++--
Mqml/views/LoginView.qml | 4++--
Mqml/views/MessageThreadView.qml | 4++--
Mqml/views/ProfileView.qml | 4++--
Mqml/views/SettingsView.qml | 4++--
20 files changed, 42 insertions(+), 58 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt @@ -14,22 +14,22 @@ if(CMAKE_VERSION VERSION_LESS "3.7.0") endif() # Add here any library you need -find_package(Qt5 COMPONENTS Widgets Qml Quick Network REQUIRED) -find_package(Qt5Keychain REQUIRED) +find_package(Qt6 COMPONENTS Widgets Qml Quick Network REQUIRED) +find_package(Qt6Keychain REQUIRED) # Add the resource file as it *must* be compiled (also possible with # qmake or manually with rcc) # https://doc.qt.io/qt-5/resources.html # https://doc.qt.io/qt-5/qtcore-cmake-qt5-add-resources.html set(SOURCES main.cpp networkmanager.cpp) # A variable is needed as I guess it will add more sources inside -qt5_add_resources(SOURCES qml.qrc) +qt_add_resources(SOURCES qml.qrc) add_executable(demo ${SOURCES} ) # Add here any library you need -target_link_libraries(demo Qt5::Widgets Qt5::Qml Qt5::Quick Qt5::Network qt5keychain) +target_link_libraries(demo Qt6::Widgets Qt6::Qml Qt6::Quick Qt6::Network qt6keychain) # Install the binary install(TARGETS demo DESTINATION bin) diff --git a/derivation_demo.nix b/derivation_demo.nix @@ -1,7 +1,7 @@ { lib , stdenv , cmake -, qt5 +, qt6 , wrapQtAppsHook , qtkeychain }: @@ -14,9 +14,9 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake wrapQtAppsHook ]; buildInputs = [ - qt5.qtbase - qt5.qtdeclarative - qt5.qtquickcontrols2 + qt6.qtbase + qt6.qtdeclarative + qt6.qt5compat qtkeychain ]; diff --git a/flake.nix b/flake.nix @@ -18,7 +18,7 @@ pkgs = nixpkgs.legacyPackages.${system}; in { - default = pkgs.libsForQt5.callPackage ./derivation_demo.nix { }; + default = pkgs.qt6Packages.callPackage ./derivation_demo.nix { }; } ); @@ -31,11 +31,11 @@ default = pkgs.mkShell { buildInputs = with pkgs; [ cmake - libsForQt5.qt5.qtbase - libsForQt5.qt5.qtdeclarative - libsForQt5.qt5.qtquickcontrols2 + qt6.qtbase + qt6.qtdeclarative + qt6.qt5compat qtkeychain - libsForQt5.wrapQtAppsHook + qt6Packages.wrapQtAppsHook ]; }; } diff --git a/main.qml b/main.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Window 2.2 +import QtQuick +import QtQuick.Window Window { id: mainWindow diff --git a/networkmanager.cpp b/networkmanager.cpp @@ -5,7 +5,7 @@ #include <QJsonArray> #include <QUrlQuery> #include <QDebug> -#include <qt5keychain/keychain.h> +#include <qt6keychain/keychain.h> NetworkManager::NetworkManager(QObject *parent) : QObject(parent) diff --git a/qml/components/AttachmentPreview.qml b/qml/components/AttachmentPreview.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Layouts 1.3 +import QtQuick +import QtQuick.Layouts import "../styles" ColumnLayout { diff --git a/qml/components/Avatar.qml b/qml/components/Avatar.qml @@ -1,4 +1,4 @@ -import QtQuick 2.5 +import QtQuick import "../styles" Item { @@ -18,6 +18,7 @@ Item { anchors.fill: parent radius: size / 2 color: getColorForName(name) + clip: true // Initials Text { @@ -36,23 +37,6 @@ Item { source: imageSource fillMode: Image.PreserveAspectCrop smooth: true - - layer.enabled: true - layer.effect: ShaderEffect { - property variant source: parent - fragmentShader: " - varying highp vec2 qt_TexCoord0; - uniform sampler2D source; - uniform lowp float qt_Opacity; - void main() { - lowp vec4 tex = texture2D(source, qt_TexCoord0); - highp vec2 center = vec2(0.5, 0.5); - highp float dist = distance(qt_TexCoord0, center); - lowp float alpha = smoothstep(0.5, 0.49, dist); - gl_FragColor = vec4(tex.rgb, tex.a * alpha) * qt_Opacity; - } - " - } } } diff --git a/qml/components/ChatListItem.qml b/qml/components/ChatListItem.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Layouts 1.3 +import QtQuick +import QtQuick.Layouts import "../styles" Rectangle { diff --git a/qml/components/MessageBubble.qml b/qml/components/MessageBubble.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Layouts 1.3 +import QtQuick +import QtQuick.Layouts import "../styles" Item { diff --git a/qml/components/MessageInput.qml b/qml/components/MessageInput.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Layouts 1.3 +import QtQuick +import QtQuick.Layouts import "../styles" Rectangle { diff --git a/qml/components/TopBar.qml b/qml/components/TopBar.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Layouts 1.3 +import QtQuick +import QtQuick.Layouts import "../styles" Rectangle { diff --git a/qml/models/ChatListModel.qml b/qml/models/ChatListModel.qml @@ -1,4 +1,4 @@ -import QtQuick 2.5 +import QtQuick Item { id: root diff --git a/qml/models/MessageCache.qml b/qml/models/MessageCache.qml @@ -1,4 +1,4 @@ -import QtQuick 2.5 +import QtQuick // Singleton-like persistent message cache QtObject { diff --git a/qml/models/MessageListModel.qml b/qml/models/MessageListModel.qml @@ -1,4 +1,4 @@ -import QtQuick 2.5 +import QtQuick Item { id: root diff --git a/qml/styles/TelegramStyle.qml b/qml/styles/TelegramStyle.qml @@ -1,5 +1,5 @@ pragma Singleton -import QtQuick 2.5 +import QtQuick QtObject { // Colors (Telegram-inspired) diff --git a/qml/views/ChatListView.qml b/qml/views/ChatListView.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Layouts 1.3 +import QtQuick +import QtQuick.Layouts import "../components" import "../models" import "../styles" diff --git a/qml/views/LoginView.qml b/qml/views/LoginView.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Layouts 1.3 +import QtQuick +import QtQuick.Layouts import "../styles" Item { diff --git a/qml/views/MessageThreadView.qml b/qml/views/MessageThreadView.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Layouts 1.3 +import QtQuick +import QtQuick.Layouts import "../components" import "../models" import "../styles" diff --git a/qml/views/ProfileView.qml b/qml/views/ProfileView.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Layouts 1.3 +import QtQuick +import QtQuick.Layouts import "../components" import "../styles" diff --git a/qml/views/SettingsView.qml b/qml/views/SettingsView.qml @@ -1,5 +1,5 @@ -import QtQuick 2.5 -import QtQuick.Layouts 1.3 +import QtQuick +import QtQuick.Layouts import "../components" import "../models" import "../styles"