main.qml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import QtQuick 2.15
  2. import QtQuick.Window 2.15
  3. import QtQuick.Controls 2.15
  4. import QtQuick.Layouts 1.15
  5. import QtWebSockets
  6. import ru.ded.beerlog 1.0
  7. import "Components"
  8. ApplicationWindow {
  9. width: 640
  10. height: 480
  11. visible: true
  12. title: qsTr("Beer Log")
  13. header: ToolBar {
  14. RowLayout {
  15. anchors.fill: parent
  16. MenuBackButton {
  17. state: stackView.depth > 1 ? "back" : "menu"
  18. onClicked: mainMenu.open()
  19. onBack: stackView.pop()
  20. }
  21. ToolButton {
  22. text: usersModel.selectedUserName
  23. Layout.fillWidth: true
  24. onClicked: usersMenu.open()
  25. }
  26. }
  27. Menu {
  28. id: usersMenu
  29. UsersViewModel {
  30. id: usersModel
  31. }
  32. Repeater {
  33. model: usersModel.users
  34. MenuItem {
  35. text: modelData.name
  36. onClicked: {
  37. usersModel.selectedUser = modelData.id
  38. }
  39. }
  40. }
  41. }
  42. }
  43. MainMenu {
  44. id: mainMenu
  45. readonly property var actions: {
  46. "settings": () => { stackView.openPage("Views/SettingsView.qml") },
  47. "quit": () => { Qt.quit() }
  48. }
  49. width: parent.width * 0.66
  50. height: parent.height
  51. logo: "qrc:/logo.png"
  52. appName: qsTr("BeerLog v0.1")
  53. model: ListModel {
  54. ListElement {
  55. title: qsTr("Settings")
  56. action: "settings"
  57. }
  58. ListElement {
  59. title: qsTr("Quit")
  60. action: "quit"
  61. }
  62. }
  63. onActionSelected: (action) => actions[action]()
  64. }
  65. StackView {
  66. id: stackView
  67. initialItem: "Views/OrdersView.qml"
  68. anchors.fill: parent
  69. function openPage(page) {
  70. if (depth > 1) {
  71. pop()
  72. }
  73. push(page)
  74. mainMenu.close()
  75. }
  76. function showError(text) {
  77. ToolTip.show(text, 1000)
  78. }
  79. }
  80. Dialog {
  81. id: quitDialog
  82. property bool quitAccepted: false
  83. anchors.centerIn: parent
  84. parent: Overlay.overlay
  85. modal: true
  86. title: qsTr("Quit")
  87. standardButtons: Dialog.Yes | Dialog.No
  88. Label {
  89. text: qsTr("Realy quit the application?")
  90. }
  91. onAccepted: {
  92. quitAccepted = true
  93. Qt.quit()
  94. }
  95. }
  96. onClosing: (close) => {
  97. if (stackView.depth > 1) {
  98. close.accepted = false
  99. stackView.pop()
  100. return
  101. }
  102. if (!quitDialog.quitAccepted) {
  103. close.accepted = false
  104. quitDialog.open()
  105. }
  106. }
  107. }