diff --git a/CMakeLists.txt b/CMakeLists.txt index 57561c6b..8d64e9f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,6 +70,7 @@ qt_add_qml_module(chat VERSION 1.0 QML_FILES main.qml + qml/ChatDrawer.qml qml/ModelDownloaderDialog.qml qml/NetworkDialog.qml qml/NewVersionDialog.qml diff --git a/main.qml b/main.qml index c6b8ad84..c1ed3232 100644 --- a/main.qml +++ b/main.qml @@ -514,135 +514,13 @@ Window { } } - Drawer { + ChatDrawer { id: drawer y: header.height width: 0.3 * window.width height: window.height - y - modal: false - opacity: 0.9 - - background: Rectangle { - height: parent.height - color: theme.backgroundDarkest - } - - Item { - anchors.fill: parent - anchors.margins: 30 - - Accessible.role: Accessible.Pane - Accessible.name: qsTr("Drawer on the left of the application") - Accessible.description: qsTr("Drawer that is revealed by pressing the hamburger button") - - Label { - id: conversationList - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - wrapMode: Text.WordWrap - text: qsTr("Chat lists of specific conversations coming soon! Check back often for new features :)") - color: theme.textColor - - Accessible.role: Accessible.Paragraph - Accessible.name: qsTr("Coming soon") - Accessible.description: text - } - - Label { - id: discordLink - textFormat: Text.RichText - anchors.left: parent.left - anchors.right: parent.right - anchors.top: conversationList.bottom - anchors.topMargin: 20 - wrapMode: Text.WordWrap - text: qsTr("Check out our discord channel https://discord.gg/4M2QFmTt2k") - onLinkActivated: { Qt.openUrlExternally("https://discord.gg/4M2QFmTt2k") } - color: theme.textColor - linkColor: theme.linkColor - - Accessible.role: Accessible.Link - Accessible.name: qsTr("Discord link") - } - - Label { - id: nomicProps - textFormat: Text.RichText - anchors.left: parent.left - anchors.right: parent.right - anchors.top: discordLink.bottom - anchors.topMargin: 20 - wrapMode: Text.WordWrap - text: qsTr("Thanks to Nomic AI and the community for contributing so much great data and energy!") - onLinkActivated: { Qt.openUrlExternally("https://home.nomic.ai") } - color: theme.textColor - linkColor: theme.linkColor - - Accessible.role: Accessible.Paragraph - Accessible.name: qsTr("Thank you blurb") - Accessible.description: qsTr("Contains embedded link to https://home.nomic.ai") - } - - Button { - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: downloadButton.top - anchors.bottomMargin: 20 - padding: 15 - contentItem: Text { - text: qsTr("Check for updates...") - horizontalAlignment: Text.AlignHCenter - color: theme.textColor - - Accessible.role: Accessible.Button - Accessible.name: text - Accessible.description: qsTr("Use this to launch an external application that will check for updates to the installer") - } - - background: Rectangle { - opacity: .5 - border.color: theme.backgroundLightest - border.width: 1 - radius: 10 - color: theme.backgroundLight - } - - onClicked: { - if (!LLM.checkForUpdates()) - checkForUpdatesError.open() - } - } - - Button { - id: downloadButton - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - padding: 15 - contentItem: Text { - text: qsTr("Download new models...") - horizontalAlignment: Text.AlignHCenter - color: theme.textColor - - Accessible.role: Accessible.Button - Accessible.name: text - Accessible.description: qsTr("Use this to launch a dialog to download new models") - } - - background: Rectangle { - opacity: .5 - border.color: theme.backgroundLightest - border.width: 1 - radius: 10 - color: theme.backgroundLight - } - - onClicked: { - downloadNewModels.open() - } - } - + onDownloadClicked: { + downloadNewModels.open() } } diff --git a/qml/ChatDrawer.qml b/qml/ChatDrawer.qml new file mode 100644 index 00000000..eb2e1f64 --- /dev/null +++ b/qml/ChatDrawer.qml @@ -0,0 +1,141 @@ +import QtCore +import QtQuick +import QtQuick.Controls +import QtQuick.Controls.Basic +import QtQuick.Layouts +import llm +import download +import network + +Drawer { + id: chatDrawer + modal: false + opacity: 0.9 + + Theme { + id: theme + } + + signal downloadClicked + + background: Rectangle { + height: parent.height + color: theme.backgroundDarkest + } + + Item { + anchors.fill: parent + anchors.margins: 30 + + Accessible.role: Accessible.Pane + Accessible.name: qsTr("Drawer on the left of the application") + Accessible.description: qsTr("Drawer that is revealed by pressing the hamburger button") + + Label { + id: conversationList + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + wrapMode: Text.WordWrap + text: qsTr("Chat lists of specific conversations coming soon! Check back often for new features :)") + color: theme.textColor + + Accessible.role: Accessible.Paragraph + Accessible.name: qsTr("Coming soon") + Accessible.description: text + } + + Label { + id: discordLink + textFormat: Text.RichText + anchors.left: parent.left + anchors.right: parent.right + anchors.top: conversationList.bottom + anchors.topMargin: 20 + wrapMode: Text.WordWrap + text: qsTr("Check out our discord channel https://discord.gg/4M2QFmTt2k") + onLinkActivated: { Qt.openUrlExternally("https://discord.gg/4M2QFmTt2k") } + color: theme.textColor + linkColor: theme.linkColor + + Accessible.role: Accessible.Link + Accessible.name: qsTr("Discord link") + } + + Label { + id: nomicProps + textFormat: Text.RichText + anchors.left: parent.left + anchors.right: parent.right + anchors.top: discordLink.bottom + anchors.topMargin: 20 + wrapMode: Text.WordWrap + text: qsTr("Thanks to Nomic AI and the community for contributing so much great data and energy!") + onLinkActivated: { Qt.openUrlExternally("https://home.nomic.ai") } + color: theme.textColor + linkColor: theme.linkColor + + Accessible.role: Accessible.Paragraph + Accessible.name: qsTr("Thank you blurb") + Accessible.description: qsTr("Contains embedded link to https://home.nomic.ai") + } + + Button { + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: downloadButton.top + anchors.bottomMargin: 20 + padding: 15 + contentItem: Text { + text: qsTr("Check for updates...") + horizontalAlignment: Text.AlignHCenter + color: theme.textColor + + Accessible.role: Accessible.Button + Accessible.name: text + Accessible.description: qsTr("Use this to launch an external application that will check for updates to the installer") + } + + background: Rectangle { + opacity: .5 + border.color: theme.backgroundLightest + border.width: 1 + radius: 10 + color: theme.backgroundLight + } + + onClicked: { + if (!LLM.checkForUpdates()) + checkForUpdatesError.open() + } + } + + Button { + id: downloadButton + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + padding: 15 + contentItem: Text { + text: qsTr("Download new models...") + horizontalAlignment: Text.AlignHCenter + color: theme.textColor + + Accessible.role: Accessible.Button + Accessible.name: text + Accessible.description: qsTr("Use this to launch a dialog to download new models") + } + + background: Rectangle { + opacity: .5 + border.color: theme.backgroundLightest + border.width: 1 + radius: 10 + color: theme.backgroundLight + } + + onClicked: { + downloadClicked() } + } + } +} \ No newline at end of file