Fummeljob hierum darum
This commit is contained in:
@@ -143,9 +143,7 @@ Frame
|
||||
var bd = birthday.text
|
||||
if (len === 2 || len === 5) birthday.text = bd + "."
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Label
|
||||
|
||||
277
Gui/AddNewObject.qml
Normal file
277
Gui/AddNewObject.qml
Normal file
@@ -0,0 +1,277 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
GridLayout
|
||||
{
|
||||
id: newObject
|
||||
|
||||
columns: 4
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
rowSpacing: 9
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Firma")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
ComboBox
|
||||
{
|
||||
property string name: "business"
|
||||
id: business
|
||||
editable: true
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 3
|
||||
}
|
||||
|
||||
//// New grid row
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Straße")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
TextField
|
||||
{
|
||||
property string name: "street"
|
||||
id: street
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
onTextChanged: checkFields()
|
||||
placeholderText: "Pflichtfeld"
|
||||
placeholderTextColor: "red"
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Nr.")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
TextField
|
||||
{
|
||||
property string name: "houseno"
|
||||
id: houseno
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
onTextChanged: checkFields()
|
||||
placeholderText: "Pflichtfeld"
|
||||
placeholderTextColor: "red"
|
||||
}
|
||||
|
||||
// New grid row
|
||||
Label
|
||||
{
|
||||
text: qsTr("PLZ")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
ComboBox
|
||||
{
|
||||
property string name: "postcode"
|
||||
id: postcode
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Ort")
|
||||
Layout.alignment: Qt.AlignRight
|
||||
|
||||
}
|
||||
|
||||
ComboBox
|
||||
{
|
||||
property string name: "city"
|
||||
id: city
|
||||
Layout.fillWidth: true
|
||||
editable: true
|
||||
onEditTextChanged: checkFields()
|
||||
onCurrentTextChanged: checkFields()
|
||||
model: address_model
|
||||
textRole: "city"
|
||||
popup.height: 300
|
||||
popup.y: postcode.y + 5 - (postcode.height * 2)
|
||||
currentIndex: -1
|
||||
}
|
||||
|
||||
// New grid row
|
||||
Label
|
||||
{
|
||||
text: qsTr("Parteien")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
SpinBox
|
||||
{
|
||||
id: parteien
|
||||
Layout.fillWidth: true
|
||||
from: 1
|
||||
to: 100
|
||||
value: 1
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Stockwerke")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
SpinBox
|
||||
{
|
||||
id: floors
|
||||
Layout.fillWidth: true
|
||||
from: 1
|
||||
to: 100
|
||||
value: 1
|
||||
}
|
||||
|
||||
// New grid row
|
||||
Label
|
||||
{
|
||||
text: qsTr("Zwischenetage")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
ComboBox
|
||||
{
|
||||
property string name: "mezzanin"
|
||||
id: mezzanin
|
||||
Layout.fillWidth: true
|
||||
editable: false
|
||||
model: [qsTr("Jööö"), qsTr("Nöööööööööööööööööööööööööö")]
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Aufzug")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
ComboBox
|
||||
{
|
||||
property string name: "lift"
|
||||
id: lift
|
||||
Layout.fillWidth: true
|
||||
editable: false
|
||||
model: [qsTr("Jööö"), qsTr("Nöööööööööööööööööööööööööö")]
|
||||
}
|
||||
|
||||
//New grid row
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Fenster")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
ComboBox
|
||||
{
|
||||
property string name: "windows"
|
||||
id: windows
|
||||
Layout.fillWidth: true
|
||||
editable: false
|
||||
model: [qsTr("Jööö"), qsTr("Nöööööööööööööööööööööööööö")]
|
||||
onCurrentIndexChanged: nrWindows.enabled = (windows.currentIndex === 0)? true: false
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Anzahl")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
SpinBox
|
||||
{
|
||||
id: nrWindows
|
||||
Layout.fillWidth: true
|
||||
from: 0
|
||||
to: 100
|
||||
value: 0
|
||||
}
|
||||
|
||||
// New grid row
|
||||
CheckBox
|
||||
{
|
||||
id: ladder
|
||||
text: qsTr("Leiter")
|
||||
Layout.alignment: Qt.AlignRight
|
||||
checked: false
|
||||
onCheckStateChanged:
|
||||
{
|
||||
//checkFields()
|
||||
}
|
||||
}
|
||||
|
||||
CheckBox
|
||||
{
|
||||
id: accessible
|
||||
text: qsTr("Erreichbar")
|
||||
Layout.alignment: Qt.AlignRight
|
||||
checked: false
|
||||
onCheckStateChanged:
|
||||
{
|
||||
//checkFields()
|
||||
}
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Besonderheiten")
|
||||
Layout.alignment: Qt.AlignRight
|
||||
}
|
||||
ComboBox
|
||||
{
|
||||
property string name: "remarks"
|
||||
id: remarks
|
||||
Layout.fillWidth: true
|
||||
editable: false
|
||||
textRole: "display"
|
||||
}
|
||||
|
||||
//// New grid row
|
||||
Label
|
||||
{
|
||||
text: qsTr("kontaktdaten")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignTop
|
||||
}
|
||||
|
||||
ComboBox
|
||||
{
|
||||
property string name: "contact"
|
||||
id: contact
|
||||
Layout.fillWidth: true
|
||||
editable: false
|
||||
model: [qsTr("Beirat"), qsTr("Hausmeister")]
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Reingunsmittel wo?")
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
TextField
|
||||
{
|
||||
property string name: "cleansing"
|
||||
id: cleamsing
|
||||
Layout.fillWidth: true
|
||||
placeholderText: "Pflichtfeld"
|
||||
placeholderTextColor: "red"
|
||||
}
|
||||
Item
|
||||
{
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -41,9 +41,9 @@ ColumnLayout
|
||||
{
|
||||
Layout.alignment: Qt.AlignTop
|
||||
Layout.fillWidth: true
|
||||
ObjectView
|
||||
AddNewObject
|
||||
{
|
||||
id: objectView
|
||||
id: newObject
|
||||
width: parent.width
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,10 +182,18 @@ GridLayout
|
||||
Layout.columnSpan: 3
|
||||
visible: radio.children[1].checked
|
||||
validator: RegularExpressionValidator
|
||||
|
||||
{
|
||||
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
|
||||
}
|
||||
Keys.onPressed: (event)=>
|
||||
{
|
||||
if (event.key !== Qt.Key_Backspace)
|
||||
{
|
||||
var len = birthday.length
|
||||
var bd = birthday.text
|
||||
if (len === 2 || len === 5) birthday.text = bd + "."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label
|
||||
|
||||
174
Gui/CustomerContactDetails.qml
Normal file
174
Gui/CustomerContactDetails.qml
Normal file
@@ -0,0 +1,174 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
GridLayout
|
||||
{
|
||||
columns: 2
|
||||
rowSpacing: 25
|
||||
Layout.leftMargin: 7
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Layout.columnSpan: 2
|
||||
Label
|
||||
{
|
||||
id: contactLabel
|
||||
color: "darksalmon"
|
||||
font.bold: true
|
||||
text: qsTr("Ansprechpartner")
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: contact? contact['contact']['salute'] + " " + contact['contact']['fname'] + " " + contact['contact']['lname']: ""
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Geburtsdatum")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: contact? contact['contact']['birthday']: ""
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("E-Mail")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: contact? contact['contact']['email']: ""
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Position")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: contact? contact['contact']['position']: ""
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Priorität")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: contact? contact['contact']['priority']: ""
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Telefon")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: contact? contact['contact']['phone']: ""
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Handy")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: contact? contact['contact']['cell']: ""
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Abrechnung")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: contact? contact['contact']['invoice']: ""
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Mahnung")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: contact? contact['contact']['reminder']: ""
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
Item
|
||||
{
|
||||
Layout.columnSpan: 2
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
Component.onCompleted:
|
||||
{
|
||||
if (contact && contact['contact']['salute'] === "Frau")
|
||||
contactLabel.text = qsTr("Ansprechpartnerin")
|
||||
}
|
||||
}
|
||||
@@ -2,26 +2,61 @@ import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
Item
|
||||
ColumnLayout
|
||||
{
|
||||
property int selectedClient: -1
|
||||
property var client: null
|
||||
property var contact: null
|
||||
id: clDet
|
||||
ColumnLayout
|
||||
|
||||
Button
|
||||
{
|
||||
Label
|
||||
text: qsTr("Zurück")
|
||||
//Layout.columnSpan: 2
|
||||
onClicked: customersStack.pop()
|
||||
}
|
||||
|
||||
SplitView
|
||||
{
|
||||
id: clDetView
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
leftPadding: 9
|
||||
rightPadding: 9
|
||||
|
||||
CustomerDetailsView
|
||||
{
|
||||
text: qsTr("Ausgewählter Kunde " + selectedClient)
|
||||
id: customerDetails
|
||||
}
|
||||
|
||||
Button
|
||||
CustomerContactDetails
|
||||
{
|
||||
text: qsTr("Kunden zeigen")
|
||||
onClicked: customersStack.pop()
|
||||
id: contactDetails
|
||||
visible: false
|
||||
}
|
||||
|
||||
NoCustomerContact
|
||||
{
|
||||
id: noCustomerContact
|
||||
visible: false
|
||||
}
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
//Layout.columnSpan: 2
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
Component.onCompleted:
|
||||
{
|
||||
business_model.onRowClicked(selectedClient)
|
||||
//business_model.onRowClicked(selectedClient)
|
||||
client = business_model.getClientDetails()
|
||||
if (client['business']['contactid'] > 0)
|
||||
{
|
||||
contact = contact_model.getContactDetails(client['business']['contactid'])
|
||||
contactDetails.visible = true
|
||||
}
|
||||
else noCustomerContact.visible = true
|
||||
}
|
||||
}
|
||||
|
||||
225
Gui/CustomerDetailsView.qml
Normal file
225
Gui/CustomerDetailsView.qml
Normal file
@@ -0,0 +1,225 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
GridLayout
|
||||
{
|
||||
columns: 2
|
||||
rowSpacing: 25
|
||||
SplitView.preferredWidth: clDetView.width / 3 * 1.8
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Steuer-ID")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: client['business']['tax']? client['business']['tax']: ""
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Anmerkungen")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: client['business']['info']? client['business']['info']: ""
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Kundenname")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: client['business']['company']
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("CEO")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: client['business']['ceo']
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Telefon")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: client['business']['phone']? client['business']['phone']: ""
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Handy")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: client['business']['cell']? client['business']['cell']: ""
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Webseite")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: clientWebsite
|
||||
color: "goldenrod"
|
||||
font.underline: false
|
||||
text: client['business']['website']? '<a href="' + client['business']['website'] + '">' + client['business']['website'] + '</a>': ""
|
||||
onLinkActivated:
|
||||
{
|
||||
var web_protocol = /^((http|https):\/\/)/;
|
||||
var client_website = !web_protocol.test(client['business']['website'])? "https://" + client['business']['website']: client['business']['website'];
|
||||
Qt.openUrlExternally(client_website)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("E-Mail")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: clientEmail
|
||||
color: "goldenrod"
|
||||
text: client['business']['email']? '<a href="mailto:' + client['business']['email'] + '">' + client['business']['email'] + '</a>': ""
|
||||
onLinkActivated: Qt.openUrlExternally('mailto:' + client['business']['email'])
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Straße")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: client['business']['street']? client['business']['tax']: ""
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Haus-Nr.")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: client['business']['house']? client['business']['house']: ""
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("PLZ")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: client['business']['zip']? client['business']['zip']: ""
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
text: qsTr("Stadt")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: client['business']['city']? client['business']['city']: ""
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
// Item
|
||||
// {
|
||||
// Layout.columnSpan: 2
|
||||
// Layout.fillHeight: true
|
||||
// }
|
||||
}
|
||||
@@ -145,6 +145,7 @@ Item
|
||||
hoverEnabled: true
|
||||
onDoubleClicked:
|
||||
{
|
||||
business_model.onRowClicked(row)
|
||||
customersStack.push("CustomerDetails.qml", {selectedClient: row});
|
||||
}
|
||||
|
||||
|
||||
@@ -83,6 +83,13 @@ Item
|
||||
placeholderText: qsTr ("Benutzernamen eingeben")
|
||||
implicitWidth: 300
|
||||
font: hussarPrint.font
|
||||
focus: true
|
||||
onAccepted:
|
||||
{
|
||||
if (benutzerName.text.trim() && passwort.text.trim())
|
||||
loggedin_user.login(benutzerName.text.trim(), passwort.text)
|
||||
else if(benutzerName.text.trim()) passwort.forceActiveFocus()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,6 +117,12 @@ Item
|
||||
implicitWidth: 300
|
||||
font: hussarPrint.font
|
||||
echoMode: TextInput.Password
|
||||
onAccepted:
|
||||
{
|
||||
if (benutzerName.text.trim() && passwort.text.trim())
|
||||
loggedin_user.login(benutzerName.text.trim(), passwort.text)
|
||||
else if(passwort.text.trim()) benutzerName.forceActiveFocus()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,6 +206,7 @@ Item
|
||||
config.invalidEncryptionKey.connect(getEncryptionKey)
|
||||
config.checkEncryptionKey()
|
||||
loggedin_user.noDbConnection.connect(dbConnectionFailed)
|
||||
benutzerName.forceActiveFocus()
|
||||
}
|
||||
|
||||
function loggedin()
|
||||
|
||||
33
Gui/NoCustomerContact.qml
Normal file
33
Gui/NoCustomerContact.qml
Normal file
@@ -0,0 +1,33 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
GridLayout
|
||||
{
|
||||
columns: 2
|
||||
rowSpacing: 25
|
||||
|
||||
// Grid row
|
||||
ColumnLayout
|
||||
{
|
||||
Label
|
||||
{
|
||||
color: "darksalmon"
|
||||
font.bold: true
|
||||
text: qsTr("Kein Ansprechpartner gefunden")
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
color: "goldenrod"
|
||||
text: qsTr("Was willst du tun?")
|
||||
}
|
||||
}
|
||||
|
||||
// Grid row
|
||||
Item
|
||||
{
|
||||
Layout.columnSpan: 2
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
}
|
||||
134
Gui/PrinterDialog.qml
Normal file
134
Gui/PrinterDialog.qml
Normal file
@@ -0,0 +1,134 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
Window
|
||||
{
|
||||
property alias printerDialog: printDialog
|
||||
property var printers: null
|
||||
|
||||
id: printDialog
|
||||
title: qsTr("PYQCRM - Drucker")
|
||||
color: palette.base
|
||||
minimumWidth: 300
|
||||
maximumWidth: 600
|
||||
minimumHeight: 150
|
||||
maximumHeight: 150
|
||||
ColumnLayout
|
||||
{
|
||||
spacing: 9
|
||||
y: 15
|
||||
implicitWidth: parent.width
|
||||
RowLayout
|
||||
{
|
||||
Layout.fillWidth: true
|
||||
Layout.leftMargin: 5
|
||||
Layout.rightMargin: 5
|
||||
Label
|
||||
{
|
||||
id: printersLabel
|
||||
Layout.alignment: Qt.AlignRight
|
||||
text: qsTr("Drucker")
|
||||
}
|
||||
|
||||
ComboBox
|
||||
{
|
||||
id: allPrinters
|
||||
model: printers
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
Layout.leftMargin: 5
|
||||
Layout.rightMargin: 5
|
||||
Layout.fillWidth: true
|
||||
|
||||
Label
|
||||
{
|
||||
Layout.minimumWidth: printersLabel.width
|
||||
Layout.alignment: Qt.AlignRight
|
||||
text: qsTr("Kopie")
|
||||
}
|
||||
|
||||
SpinBox
|
||||
{
|
||||
id: copiesSpinBox
|
||||
from: 1
|
||||
to: 10
|
||||
value: 1
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
Layout.leftMargin: 5
|
||||
Layout.rightMargin: 5
|
||||
Layout.fillWidth: true
|
||||
CheckBox
|
||||
{
|
||||
id: colorPrint
|
||||
text: qsTr("Farbe")
|
||||
Layout.minimumWidth: printersLabel.width
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
Layout.leftMargin: 5
|
||||
Layout.rightMargin: 5
|
||||
Layout.fillWidth: true
|
||||
Item
|
||||
{
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Button
|
||||
{
|
||||
id: printButton
|
||||
text: qsTr("Drucken")
|
||||
onClicked:
|
||||
{
|
||||
var copies = copiesSpinBox.value > 1? copiesSpinBox.value + " copies": "one copy"
|
||||
console.log("Printing ", copies, " using ", allPrinters.currentText);
|
||||
printDialog.close();
|
||||
}
|
||||
}
|
||||
|
||||
Button
|
||||
{
|
||||
text: qsTr("Ablehnen")
|
||||
onClicked: printDialog.close();
|
||||
}
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
}
|
||||
|
||||
onVisibleChanged:
|
||||
{
|
||||
copiesSpinBox.value = 1
|
||||
colorPrint.checked = true
|
||||
}
|
||||
|
||||
Component.onCompleted:
|
||||
{
|
||||
printers = sys_printers.getPrinters()
|
||||
if (sys_printers.getDefaultPrinter())
|
||||
allPrinters.currentIndex = allPrinters.indexOfValue(sys_printers.getDefaultPrinter())
|
||||
}
|
||||
}
|
||||
47
Gui/ReadMe.qml
Normal file
47
Gui/ReadMe.qml
Normal file
@@ -0,0 +1,47 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
Window
|
||||
{
|
||||
property alias readMeWin: readMeWin
|
||||
id: readMeWin
|
||||
width: 400
|
||||
height: 300
|
||||
title: "PYQCRM - README"
|
||||
color: palette.base
|
||||
|
||||
ScrollView
|
||||
{
|
||||
anchors.fill: parent
|
||||
TextArea
|
||||
{
|
||||
id: readMe
|
||||
anchors.fill: parent
|
||||
readOnly: true
|
||||
wrapMode: TextArea.Wrap
|
||||
color: "darksalmon"
|
||||
|
||||
Component.onCompleted:
|
||||
{
|
||||
var filePath = "qrc:/README";
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", filePath, true);
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState === XMLHttpRequest.DONE)
|
||||
{
|
||||
if (xhr.status === 200)
|
||||
{
|
||||
readMe.text = xhr.responseText;
|
||||
}
|
||||
else
|
||||
{
|
||||
readMe.text = qsTr("Datei nicht gefunden!");
|
||||
}
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -172,7 +172,32 @@ RowLayout
|
||||
icon.color: "red"
|
||||
flat: true
|
||||
Layout.rightMargin: 9
|
||||
}
|
||||
onClicked: mainMenu.open()
|
||||
|
||||
Menu {
|
||||
id: mainMenu
|
||||
MenuItem
|
||||
{
|
||||
text: qsTr("Benutzer-Verwaltung")
|
||||
onTriggered: appLoader.source = "UsersPage.qml"
|
||||
}
|
||||
MenuSeparator {}
|
||||
MenuItem { text: qsTr("Als PDF exportieren") }
|
||||
MenuSeparator {}
|
||||
MenuItem { text: qsTr("Drucken") }
|
||||
MenuItem
|
||||
{
|
||||
text: qsTr("Erweiterter Druck")
|
||||
onTriggered: printerDialog.show()
|
||||
}
|
||||
MenuSeparator {}
|
||||
MenuItem
|
||||
{
|
||||
text: qsTr("Über PYQCRM")
|
||||
onTriggered: readMeWin.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
16
Gui/UsersPage.qml
Normal file
16
Gui/UsersPage.qml
Normal file
@@ -0,0 +1,16 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
|
||||
Item
|
||||
{
|
||||
anchors.fill: parent
|
||||
|
||||
Label
|
||||
{
|
||||
text: qsTr("Benutzer-Verwaltung")
|
||||
anchors.centerIn: parent
|
||||
font.pixelSize: 57
|
||||
font.bold: true
|
||||
}
|
||||
}
|
||||
10
Gui/main.qml
10
Gui/main.qml
@@ -26,6 +26,16 @@ ApplicationWindow
|
||||
visible: bad_config || !db_con ? false: true
|
||||
}
|
||||
|
||||
PrinterDialog
|
||||
{
|
||||
id: printerDialog
|
||||
}
|
||||
|
||||
ReadMe
|
||||
{
|
||||
id: readMeWin
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
id: mainView
|
||||
|
||||
Reference in New Issue
Block a user