init commit
This commit is contained in:
178
src/app/qml/main.qml
Normal file
178
src/app/qml/main.qml
Normal file
@@ -0,0 +1,178 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
ApplicationWindow {
|
||||
id: root
|
||||
visible: true
|
||||
width: 800
|
||||
height: 600
|
||||
title: qsTr("LocalSend")
|
||||
|
||||
StackView {
|
||||
id: stackView
|
||||
anchors.fill: parent
|
||||
|
||||
Component.onCompleted: {
|
||||
push(homePageComponent)
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: homePageComponent
|
||||
Page {
|
||||
id: homePage
|
||||
|
||||
signal openSettings()
|
||||
|
||||
header: ToolBar {
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
Label {
|
||||
text: qsTr("LocalSend")
|
||||
font.bold: true
|
||||
font.pixelSize: 20
|
||||
Layout.leftMargin: 16
|
||||
}
|
||||
Item { Layout.fillWidth: true }
|
||||
ToolButton {
|
||||
text: qsTr("Settings")
|
||||
onClicked: homePage.openSettings()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
anchors.margins: 16
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
text: qsTr("Nearby Devices")
|
||||
font.bold: true
|
||||
font.pixelSize: 16
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: deviceListView
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
property var devices: appController.devices
|
||||
model: devices
|
||||
spacing: 8
|
||||
|
||||
delegate: Pane {
|
||||
width: ListView.view.width
|
||||
padding: 12
|
||||
|
||||
background: Rectangle {
|
||||
color: Qt.lighter("gray", 1.8)
|
||||
radius: 8
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
Column {
|
||||
Layout.fillWidth: true
|
||||
Label {
|
||||
text: modelData.alias || modelData.ip
|
||||
font.bold: true
|
||||
}
|
||||
Label {
|
||||
text: "%1:%2".arg(modelData.ip).arg(modelData.port)
|
||||
color: "gray"
|
||||
font.pixelSize: 12
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
text: qsTr("Send")
|
||||
onClicked: {
|
||||
// send to this device
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
Button {
|
||||
text: qsTr("Refresh")
|
||||
onClicked: appController.refreshDevices()
|
||||
}
|
||||
Item { Layout.fillWidth: true }
|
||||
Label {
|
||||
text: qsTr("Alias: %1").arg(appController.alias)
|
||||
color: "gray"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onOpenSettings: stackView.push(settingsPageComponent)
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: settingsPageComponent
|
||||
Page {
|
||||
id: settingsPage
|
||||
signal back()
|
||||
|
||||
header: ToolBar {
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
ToolButton {
|
||||
text: qsTr("Back")
|
||||
onClicked: settingsPage.back()
|
||||
}
|
||||
Label {
|
||||
text: qsTr("Settings")
|
||||
font.bold: true
|
||||
Layout.fillWidth: true
|
||||
Layout.leftMargin: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
anchors.margins: 16
|
||||
spacing: 16
|
||||
|
||||
GridLayout {
|
||||
columns: 2
|
||||
Layout.fillWidth: true
|
||||
|
||||
Label { text: qsTr("Device Alias:") }
|
||||
TextField {
|
||||
id: aliasField
|
||||
text: appController.alias
|
||||
onEditingFinished: appController.alias = text
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Label { text: qsTr("Port:") }
|
||||
SpinBox {
|
||||
id: portField
|
||||
value: appController.port
|
||||
from: 1
|
||||
to: 65535
|
||||
onValueChanged: appController.port = value
|
||||
}
|
||||
}
|
||||
|
||||
Item { Layout.fillHeight: true }
|
||||
|
||||
Label {
|
||||
text: qsTr("Server Status: %1").arg(appController.serverRunning ? qsTr("Running") : qsTr("Stopped"))
|
||||
color: appController.serverRunning ? "green" : "red"
|
||||
}
|
||||
}
|
||||
|
||||
onBack: stackView.pop()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user