FluentUI/Gallery/res/qml/component/SearchRoute.qml
yxdy ff15075c79
Some checks are pending
Gallery App Build / macOS (push) Waiting to run
Gallery App Build / Windows (push) Waiting to run
Gallery App Build / Ubuntu (push) Waiting to run
修改样式
2025-03-07 16:23:09 +08:00

400 lines
15 KiB
QML

import QtQuick 2.15
import QtQuick.Layouts
import QtQuick.Controls
import FluentUI.Controls
import FluentUI.impl
import Qt.labs.qmlmodels
import Qt5Compat.GraphicalEffects
import "base"
import "nav"
ColumnLayout {
id: control
property var p_show_nav: false
property var p_nav_type: 'car'
Rectangle{
id: search_bar
// Layout.fillWidth: true
Layout.preferredWidth: 350
Layout.preferredHeight: 55
color: Qt.rgba(0/255,0/255,0/255, 0.5)
radius: 10
Rectangle{
width: parent.width - 20 - 42
anchors.left: parent.left
anchors.leftMargin: 10
anchors.verticalCenter: parent.verticalCenter
height: 32
color: '#000'
TextBox{
id: tb_searcn
anchors.fill: parent
placeholderText: "请输入图层名称"
trailing: IconButton{
implicitWidth: 30
implicitHeight: 20
icon.name: FluentIcons.graph_Search
icon.width: 14
icon.height: 14
padding: 0
}
background: InputBackground {
implicitWidth: 200
implicitHeight: 32
activeColor: "#22C55E"
radius: 0
color: {
if(!tb_searcn.enabled){
return tb_searcn.FluentUI.theme.res.controlFillColorDisabled
}else if(tb_searcn.activeFocus){
return tb_searcn.FluentUI.theme.res.controlFillColorInputActive
}else if(tb_searcn.hovered){
return tb_searcn.FluentUI.theme.res.controlFillColorSecondary
}else{
return tb_searcn.FluentUI.theme.res.controlFillColorDefault
}
}
target: tb_searcn
}
}
}
Rectangle{
id: btn_search
width: 32
height: 32
radius: 8
anchors.right: parent.right
anchors.rightMargin: 10
anchors.verticalCenter: parent.verticalCenter
gradient: Gradient {
orientation: Gradient.Horizontal
GradientStop { position: 0.0; color: control.p_show_nav ? "#77ED8B" : Qt.rgba(255/255,255/255,255/255, 0.05) }
GradientStop { position: 1.0; color: control.p_show_nav ? "#22C55E" : Qt.rgba(255/255,255/255,255/255, 0.05) }
}
Image{
source: "qrc:/qt/qml/Gallery/res/image/components/map/ico_route.png"
anchors.centerIn: parent
ColorOverlay{
id: co_img
anchors.fill: parent
color: "#2a2a2a"
source: parent
visible: false
}
}
MouseArea{
anchors.fill: parent
hoverEnabled: true
onEntered: {
if (!control.p_show_nav) {
parent.gradient.stops[0].color = "#77ED8B"
parent.gradient.stops[1].color = "#22C55E"
co_img.visible = true
}
}
onExited: {
if (!control.p_show_nav) {
parent.gradient.stops[0].color = Qt.rgba(255/255,255/255,255/255, 0.05)
parent.gradient.stops[1].color = Qt.rgba(255/255,255/255,255/255, 0.05)
co_img.visible = false
}
}
onClicked: {
console.log("open")
control.p_show_nav = !control.p_show_nav
}
}
}
}
ListModel{
id: key_point_model
ListElement{
p_txt: "起"
p_tip_txt: "请输入起点"
p_del: false
}
ListElement{
p_txt: "终"
p_tip_txt: "请输入终点"
p_del: false
}
}
Item{
// Layout.fillWidth: true
id: it_height
Layout.preferredWidth: 350
Layout.fillHeight: true
Layout.topMargin: 0
clip: true
visible: control.p_show_nav
Rectangle{
id: result_panel
color: "transparent"//Qt.rgba(0/255,0/255,0/255, 0.5)//Qt.rgba(255/255,255/255,255/255, 0.05)
radius: 10
width: parent.width
height: {
console.log(it_input.height + "--" + parent.height)
return it_input.implicitHeight + tp_container.implicitHeight + cl_ranges.height + 80 + 30 + 25// + cl_detail.height
}
Rectangle{
id: blur_bg
anchors.fill: parent
color: Qt.rgba(0/255,0/255,0/255, 0.5)
radius: 10
}
// layer.effect: ShaderEffect {
// id: effectSource
// anchors.fill: parent
// FastBlur{
// id: blur
// anchors.fill: blur_bg
// source: blur_bg
// radius: 32
// }
// }
// FastBlur{
// anchors.fill: parent
// source: blur_bg
// radius: 64
// }
ColumnLayout{
id: cl_container
width: parent.width
spacing: 10
Item{
Layout.preferredHeight: 40
Layout.preferredWidth: result_panel.width
RowLayout{
id: tp_container
width: 140
anchors.centerIn: parent
spacing: 10
MyImgButton{
p_img: "nav_car.png"
p_checked: control.p_nav_type === 'car' ? true : false
onClickItem: control.p_nav_type = 'car'
}
MyImgButton{
p_img: "nav_truck.png"
p_checked: control.p_nav_type === 'truck' ? true : false
onClickItem: control.p_nav_type = 'truck'
}
MyImgButton{
p_img: "nav_walk.png"
p_checked: control.p_nav_type === 'walk' ? true : false
onClickItem: control.p_nav_type = 'walk'
}
MyImgButton{
p_img: "nav_bike.png"
p_checked: control.p_nav_type === 'bike' ? true : false
onClickItem: control.p_nav_type = 'bike'
}
}
}
Item{
Layout.preferredHeight: key_point_model.count * 30 + (key_point_model.count - 1) * 10
Layout.preferredWidth: result_panel.width
RowLayout{
id: it_input
anchors.fill: parent
Item{
Layout.leftMargin: 8
width: 22
Layout.preferredHeight: parent.height
Image{
anchors.centerIn: parent
source: "qrc:/qt/qml/Gallery/res/image/components/map/ico_exchange.png"
ColorOverlay{
id: img_ex
anchors.fill: parent
color: "#77ED8B"
source: parent
visible: false
}
MouseArea{
anchors.fill: parent
hoverEnabled: true
onEntered: {
img_ex.visible = true
}
onExited: {
img_ex.visible = false
}
onClicked: {
console.log("open")
}
}
}
}
ColumnLayout{
Layout.preferredWidth: result_panel.width - 60
spacing: 10
Repeater {
model: key_point_model
SearchInput {
p_txt: model.p_txt
p_tip_txt: model.p_tip_txt
p_del: model.p_del
onClickClose: {
key_point_model.remove(index, 1)
}
}
}
}
Item{
width: 22
height: parent.height
Layout.rightMargin: 8
Image{
anchors.centerIn: parent
source: "qrc:/qt/qml/Gallery/res/image/components/map/ico_plus.png"
ColorOverlay{
id: img_plus
anchors.fill: parent
color: "#77ED8B"
source: parent
visible: false
}
MouseArea{
anchors.fill: parent
hoverEnabled: true
onEntered: {
img_plus.visible = true
}
onExited: {
img_plus.visible = false
}
onClicked: {
key_point_model.insert(key_point_model.count - 1, {
p_txt: "途",
p_tip_txt: "请输入途径点",
p_del: true
})
}
}
}
}
}
}
Item{
Layout.preferredHeight: 30
Layout.preferredWidth: result_panel.width
RowLayout{
anchors.fill: parent
RadioButton {
text: "推荐方案"
checked: true
FluentUI.primaryColor: "#77ED8B"
}
RadioButton {
text: "高速优先"
checked: false
FluentUI.primaryColor: "#77ED8B"
}
RadioButton {
text: "收费最少"
checked: false
FluentUI.primaryColor: "#77ED8B"
}
}
}
Item{
Layout.preferredHeight: 30
Layout.preferredWidth: result_panel.width - 20
Layout.leftMargin: 10
Layout.rightMargin: 10
Layout.bottomMargin: 10
RowLayout{
anchors.fill: parent
spacing: 20
Button {
Layout.fillWidth: true
Layout.fillHeight: true
text: "清除路线"
}
Button {
Layout.fillWidth: true
Layout.fillHeight: true
text: "搜索路线"
highlighted: true
background: Rectangle {
anchors.fill: parent
radius: 6
gradient: Gradient {
orientation: Gradient.Horizontal
GradientStop { position: 0.0; color: "#77ED8B" }
GradientStop { position: 1.0; color: "#22C55E" }
}
}
}
}
}
ScrollView{
Layout.preferredWidth: 350
Layout.preferredHeight: {
var hei = it_height.height - (it_input.implicitHeight + 156)
return hei
}
Layout.bottomMargin: 0
// contentHeight: result_panel.height
ColumnLayout{
id: cl_ranges
anchors.left: parent.left
anchors.right: parent.right
width: result_panel.width - 20
// anchors.leftMargin: 10
// anchors.rightMargin: 10
// Layout.preferredWidth: result_panel.width - 20
RouteResult{
p_show_detail: true
}
RouteResult{
}
RouteResult{
}
RouteResult{
}
}
}
}
}
}
Item{
visible: !control.p_show_nav
Layout.fillWidth: true
Layout.fillHeight: true
}
}