Fix up Menu

This commit is contained in:
Yuri Becker
2025-03-25 12:28:30 +01:00
parent 445c183e71
commit 309f1f58d7
8 changed files with 217 additions and 296 deletions

View File

@@ -2,127 +2,106 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
ColumnLayout
{
anchors.top: TopBar.bottom
ColumnLayout {
anchors.top: Navigation.bottom
Rectangle
{
color: "dimgrey"
Rectangle {
Layout.bottomMargin: 3
Layout.fillHeight: true
Layout.fillWidth: true
Layout.bottomMargin: 3
color: "dimgrey"
radius: 45
RowLayout
{
RowLayout {
anchors.fill: parent
Rectangle
{
Rectangle {
id: contractButton
width: 300
height: 145
color: "darkslategray"
radius: 45
Layout.alignment: Qt.AlignHCenter
border.color: "steelblue"
border.width: 1
Text
{
text: qsTr("Aufträge")
anchors.centerIn: parent
font.pixelSize: 45
font.bold: true
color: "lightgoldenrodyellow"
}
color: "darkslategray"
height: 145
radius: 45
width: 300
MouseArea
{
Text {
anchors.centerIn: parent
color: "lightgoldenrodyellow"
font.bold: true
font.pixelSize: 45
text: qsTr("Aufträge")
}
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onPressed:
{
contractButton.color = "darkolivegreen"
contractButton.border.width = 3
contractButton.border.color = "skyblue"
console.log("Aufträge...")
onExited: {
contractButton.color = "darkslategray";
contractButton.border.color = "steelblue";
contractButton.border.width = 1;
}
onReleased:
{
contractButton.color = "darkslategray"
contractButton.border.width = 1
contractButton.border.color = "steelblue"
onHoveredChanged: {
var w = contractButton.border.width === 3 ? 1 : 3;
contractButton.border.width = w;
}
onHoveredChanged:
{
var w = contractButton.border.width === 3? 1: 3
contractButton.border.width = w
onPressed: {
contractButton.color = "darkolivegreen";
contractButton.border.width = 3;
contractButton.border.color = "skyblue";
console.log("Aufträge...");
}
onExited:
{
contractButton.color = "darkslategray"
contractButton.border.color = "steelblue"
contractButton.border.width = 1
onReleased: {
contractButton.color = "darkslategray";
contractButton.border.width = 1;
contractButton.border.color = "steelblue";
}
}
}
Rectangle
{
Rectangle {
id: offerButton
width: 300
height: 145
color: "darkslategray"
radius: 45
Layout.alignment: Qt.AlignHCenter
border.color: "steelblue"
border.width: 1
Text
{
text: qsTr("Angebote")
color: "darkslategray"
height: 145
radius: 45
width: 300
Text {
anchors.centerIn: parent
font.pixelSize: 45
font.bold: true
color: "lightgoldenrodyellow"
font.bold: true
font.pixelSize: 45
text: qsTr("Angebote")
}
MouseArea
{
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onPressed:
{
offerButton.color = "darkolivegreen"
offerButton.border.width = 3
offerButton.border.color = "skyblue"
console.log("Angebote...")
onExited: {
offerButton.color = "darkslategray";
offerButton.border.color = "steelblue";
offerButton.border.width = 1;
}
onReleased:
{
offerButton.color = "darkslategray"
offerButton.border.width = 1
offerButton.border.color = "steelblue"
onHoveredChanged: {
var w = offerButton.border.width === 3 ? 1 : 3;
offerButton.border.width = w;
}
onHoveredChanged:
{
var w = offerButton.border.width === 3? 1: 3
offerButton.border.width = w
onPressed: {
offerButton.color = "darkolivegreen";
offerButton.border.width = 3;
offerButton.border.color = "skyblue";
console.log("Angebote...");
}
onExited:
{
offerButton.color = "darkslategray"
offerButton.border.color = "steelblue"
offerButton.border.width = 1
onReleased: {
offerButton.color = "darkslategray";
offerButton.border.width = 1;
offerButton.border.color = "steelblue";
}
}
}

View File

@@ -3,8 +3,6 @@ import QtQuick.Controls
import QtQuick.Layouts
ColumnLayout {
id: topBar
height: parent.height
spacing: 0
@@ -14,18 +12,12 @@ ColumnLayout {
}
ButtonGroup {
id: buttonBar
}
BarButton {
id: dashBoard
ButtonGroup.group: buttonBar
Layout.margins: 3
Layout.topMargin: Dimensions.s
flat: true
icon.source: "qrc:/images/dash.svg"
implicitHeight: 90
implicitWidth: 90
text: qsTr("Dashboard")
onClicked: {
@@ -36,11 +28,7 @@ ColumnLayout {
id: kunden
ButtonGroup.group: buttonBar
Layout.margins: 3
flat: true
icon.source: "qrc:/images/customer.svg"
implicitHeight: 90
implicitWidth: 90
text: qsTr("Kunden")
onClicked: {
@@ -51,11 +39,7 @@ ColumnLayout {
id: objekt
ButtonGroup.group: buttonBar
Layout.margins: 3
flat: true
icon.source: "qrc:/images/object.svg"
implicitHeight: 90
implicitWidth: 90
text: qsTr("Objekt")
onClicked: {
@@ -66,11 +50,7 @@ ColumnLayout {
id: mitarbeiter
ButtonGroup.group: buttonBar
Layout.margins: 3
flat: true
icon.source: "qrc:/images/employee.svg"
implicitHeight: 90
implicitWidth: 90
text: qsTr("Mitarbeiter")
onClicked: {
@@ -81,11 +61,7 @@ ColumnLayout {
id: offers
ButtonGroup.group: buttonBar
Layout.margins: 3
flat: true
icon.source: "qrc:/images/offer.svg"
implicitHeight: 90
implicitWidth: 90
text: qsTr("Angebote")
onClicked: {
@@ -96,11 +72,7 @@ ColumnLayout {
id: abrechnung
ButtonGroup.group: buttonBar
Layout.margins: 3
flat: true
icon.source: "qrc:/images/invoice.svg"
implicitHeight: 90
implicitWidth: 90
text: qsTr("Abrechnung")
}
Item {

View File

@@ -4,173 +4,148 @@ import QtQuick.Controls
import QtQuick.Dialogs
import QtCore
ApplicationWindow
{
ApplicationWindow {
id: appWindow
width: Screen.width * .75
height: Screen.height * .85
visible: true
title: "TERO Personal"
font: Typography.body
color: Colors.mantle
property string confile: ""
property alias settingsFileDialog: settingsFiledialog
function goToLogin() {
appLoader.source = "LoginScreen.qml";
navigation.visible = true;
}
function showWindow(why) {
if (why === 3) {
systray.setVisible(false);
appWindow.show();
}
}
color: Colors.mantle
font: Typography.body
height: Screen.height * .85
palette.text: Colors.foreground
title: "TERO Personal"
visible: true
width: Screen.width * .75
Component.onCompleted: {
config.configurationReady.connect(goToLogin);
systray.activated.connect(showWindow);
TopBar
{
id:topBar
visible: bad_config || !db_con ? false: true
if (bad_config) {
importDialog.open();
} else {
if (db_con)
appLoader.source = "LoginScreen.qml";
else
appLoader.source = "NoDbConnection.qml";
}
}
onClosing: close => {
if (false) {
console.log("Main window closed!! Was soll ich tun? kann ich mich beenden?!");
}
}
onVisibilityChanged: {
if (appWindow.visibility === Window.Minimized && config.systray()) {
systray.setVisible(true);
appWindow.hide();
}
}
onWindowStateChanged: windowState => {
if (windowState !== Qt.WindowMinimized) {
systray.setVisible(false);
appWindow.show();
}
}
PrinterDialog
{
Navigation {
id: navigation
visible: bad_config || !db_con ? false : true
}
PrinterDialog {
id: printerDialog
}
ReadMe
{
}
ReadMe {
id: readMeWin
}
Item
{
}
Item {
id: mainView
}
Loader
{
id: appLoader
anchors
{
left: topBar.right
Rectangle {
id: contentBackground
anchors {
bottom: parent.bottom
left: navigation.right
right: parent.right
top: parent.top
bottom: parent.bottom
topMargin: Dimensions.l
bottomMargin: Dimensions.l
rightMargin: Dimensions.l
leftMargin: Dimensions.l
}
color: Colors.background
}
Loader {
id: appLoader
property alias window: appWindow
anchors {
fill: contentBackground
margins: Dimensions.l
}
}
Dialog
{
Dialog {
id: importDialog
modal: true
anchors.centerIn: parent
modal: true
standardButtons: Dialog.Yes | Dialog.No
onAccepted: settingsFiledialog.open()
onRejected: appLoader.source= "Firststart.qml"
title: qsTr("Einstellungen importieren")
onAccepted: settingsFiledialog.open()
onRejected: appLoader.source = "Firststart.qml"
}
FileDialog
{
FileDialog {
id: settingsFiledialog
title: qsTr("PYQCRM Einstellungen")
currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
modality: "ApplicationModal"
nameFilters: [qsTr("PYQCRM Einstellungen (*.pyqrec)")]
onAccepted:
{
exportFilePassword.open()
confile = selectedFile
title: qsTr("PYQCRM Einstellungen")
onAccepted: {
exportFilePassword.open();
confile = selectedFile;
}
}
Dialog
{
Dialog {
id: exportFilePassword
modal: true
title: qsTr("PYQCRM Einstellungen")
anchors.centerIn: parent
modal: true
standardButtons: Dialog.Ok | Dialog.Cancel
title: qsTr("PYQCRM Einstellungen")
onAccepted: config.importConfig(confile, exportPasswordInput.text)
ColumnLayout
{
RowLayout
{
Label
{
ColumnLayout {
RowLayout {
Label {
text: qsTr("Passwort eingeben:")
}
TextField
{
TextField {
id: exportPasswordInput
echoMode: TextInput.Password
implicitWidth: 300
}
}
}
}
Component.onCompleted:
{
config.configurationReady.connect(goToLogin)
systray.activated.connect(showWindow)
if(bad_config)
{
importDialog.open()
}
else
{
if (db_con) appLoader.source= "LoginScreen.qml"
else appLoader.source= "NoDbConnection.qml"
}
}
function showWindow(why)
{
if (why === 3)
{
systray.setVisible(false)
appWindow.show()
}
}
onVisibilityChanged:
{
if (appWindow.visibility === Window.Minimized && config.systray())
{
systray.setVisible(true)
appWindow.hide()
}
}
onWindowStateChanged: (windowState) =>
{
if (windowState !== Qt.WindowMinimized)
{
systray.setVisible(false)
appWindow.show()
}
}
onClosing: (close) =>
{
if (false)
{
console.log("Main window closed!! Was soll ich tun? kann ich mich beenden?!")
}
}
function goToLogin()
{
appLoader.source= "LoginScreen.qml"
topBar.visible = true
}
}

View File

@@ -1,2 +1,2 @@
module gui
TopBar 1.0 TopBar.qml
TopBar 1.0 Navigation.qml

View File

@@ -10,40 +10,43 @@ T.ToolButton {
icon.color: Colors.foreground
icon.height: 36
icon.width: 36
implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, implicitContentHeight + topPadding + bottomPadding)
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, implicitContentWidth + leftPadding + rightPadding)
implicitHeight: 90
implicitWidth: 100
topPadding: 20
background: Rectangle {
id: mainrect
border.color: control.palette.highlight
border.width: control.visualFocus ? 2 : 0
color: Color.blend(control.checked || control.highlighted ? control.palette.dark : control.palette.button, control.palette.mid, control.down ? 0.5 : 0.0)
implicitHeight: control.height
implicitWidth: control.width
visible: !control.flat || control.down || control.checked || control.highlighted
x: control.left
y: control.top
Rectangle {
color: "yellow"
implicitHeight: control.height
implicitWidth: 6
x: mainrect.left
y: mainrect.top
}
}
contentItem: Column {
readonly property color color: control.checked ? Colors.primaryShade : control.hovered ? Colors.primary : Colors.foreground
IconLabel {
icon: control.icon
icon.color: parent.color
icon.source: control.icon.source
icon.height: control.icon.height
icon.width: control.icon.width
color: parent.color
x: parent.width * .5 - width * .5
}
Label {
color: Colors.foreground
font: Typography.dash
font: Typography.small
color: parent.color
text: control.text
x: parent.width * .5 - width * .5
}
}
Rectangle {
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.top: parent.top
color: control.checked ? Colors.primaryShade : Colors.primary
implicitWidth: 6
visible: control.checked || control.hovered
}
MouseArea {
id: mouseArea
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onPressed: mouse => mouse.accepted = false
}
}

View File

@@ -11,9 +11,10 @@ QtObject {
readonly property color primary: "#b81a34"
readonly property color primaryContrast: "#fdfdfd"
readonly property color primaryLighter: Qt.lighter(primary, 1.5)
readonly property color primaryShade: theme === dark ? primaryLighter : Qt.darker(primary, 1.5)
readonly property color foreground: theme === dark ? "#fdfdfd" : "#110b0c"
readonly property color background: theme === dark ? "#303136" : "#eff1f5"
readonly property color mantle: theme === dark ? "#1e1f22" : "#e7e9ef"
readonly property color mantle: theme === dark ? "#1E1E23" : "#e7e9ef"
readonly property color interactive: theme === dark ? "#878b97" : "#d9d9da"
readonly property color error: theme === dark ? "#ff2264" : "#ff004b"
readonly property color transparent: "transparent"

View File

@@ -3,38 +3,29 @@ pragma Singleton
import QtCore
import QtQuick
Item
{
readonly property FontLoader robotoCondensed: FontLoader
{
Item {
readonly property font body: ({
family: robotoCondensed.font,
pointSize: 16,
weight: Font.Medium,
letterSpacing: 0,
kerning: true
})
readonly property font small: ({
family: body.family,
pointSize: 11,
weight: Font.DemiBold,
letterSpacing: body.letterSpacing,
kerning: body.kerning
})
readonly property font h1: ({
family: body.family,
pointSize: 38,
weight: body.weight,
letterSpacing: body.letterSpacing,
kerning: body.kerning
})
readonly property FontLoader robotoCondensed: FontLoader {
source: "qrc:/fonts/RobotoCondensed.otf"
}
readonly property font body:
({
family: robotoCondensed.font,
pointSize: 16,
weight: Font.Medium,
letterSpacing: 0,
kerning: true,
})
readonly property font h1:
({
family: body.family,
pointSize: 38,
weight: body.weight,
letterSpacing: body.letterSpacing,
kerning: body.kerning,
})
readonly property font dash:
({
family: body.family,
pointSize: 10,
weight: body.weight,
letterSpacing: body.letterSpacing,
kerning: body.kerning,
})
}

View File

@@ -1,6 +1,6 @@
<RCC>
<qresource prefix="/">
<file>Gui/TopBar.qml</file>
<file>Gui/Navigation.qml</file>
<file>Gui/AdminUserConfig.qml</file>
<file>Gui/EncryptionKey.qml</file>
<file>Gui/DbConfiguration.qml</file>