Compare commits

..

No commits in common. "bc4510077f04c1df8f1df64f1b3a2d2595312f3b" and "8fe4e3b0476605a0e3f2f5c8d977300cc021f237" have entirely different histories.

17 changed files with 1897 additions and 1907 deletions

View File

@ -1089,6 +1089,46 @@ Updated content:
<source>Click to Select a Color - &gt;</source> <source>Click to Select a Color - &gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="qml/page/T_ColorPicker.qml" line="22"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_ColorPicker.qml" line="23"/>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_ColorPicker.qml" line="24"/>
<source>Color Picker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_ColorPicker.qml" line="25"/>
<source>Edit Color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_ColorPicker.qml" line="26"/>
<source>Red</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_ColorPicker.qml" line="27"/>
<source>Green</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_ColorPicker.qml" line="28"/>
<source>Blue</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qml/page/T_ColorPicker.qml" line="29"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>T_ComboBox</name> <name>T_ComboBox</name>

View File

@ -1113,36 +1113,44 @@ Updated content:
<translation type="unfinished"> - &gt;</translation> <translation type="unfinished"> - &gt;</translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_ColorPicker.qml" line="22"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="obsolete"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_ColorPicker.qml" line="23"/>
<source>OK</source> <source>OK</source>
<translation type="obsolete"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_ColorPicker.qml" line="24"/>
<source>Color Picker</source> <source>Color Picker</source>
<translation type="obsolete"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_ColorPicker.qml" line="25"/>
<source>Edit Color</source> <source>Edit Color</source>
<translation type="obsolete"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_ColorPicker.qml" line="26"/>
<source>Red</source> <source>Red</source>
<translation type="obsolete"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_ColorPicker.qml" line="27"/>
<source>Green</source> <source>Green</source>
<translation type="obsolete">绿</translation> <translation type="unfinished">绿</translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_ColorPicker.qml" line="28"/>
<source>Blue</source> <source>Blue</source>
<translation type="obsolete"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="qml/page/T_ColorPicker.qml" line="29"/>
<source>Opacity</source> <source>Opacity</source>
<translation type="obsolete"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -18,7 +18,16 @@ FluScrollablePage{
text: qsTr("Click to Select a Color - >") text: qsTr("Click to Select a Color - >")
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
} }
FluColorPicker{} FluColorPicker{
cancelText: qsTr("Cancel")
okText: qsTr("OK")
titleText: qsTr("Color Picker")
editText: qsTr("Edit Color")
redText: qsTr("Red")
greenText: qsTr("Green")
blueText: qsTr("Blue")
opacityText: qsTr("Opacity")
}
} }
} }
CodeExpander{ CodeExpander{

File diff suppressed because it is too large Load Diff

View File

@ -13,15 +13,16 @@ Button{
property color current : Qt.rgba(1,1,1,1) property color current : Qt.rgba(1,1,1,1)
signal accepted() signal accepted()
property int colorHandleRadius: 8 property int colorHandleRadius: 8
property string cancelText: qsTr("Cancel") property string cancelText: "取消"
property string okText: qsTr("OK") property string okText: "确定"
property string titleText: qsTr("Color Picker") property string titleText: "颜色选择器"
property string editText: qsTr("Edit Color") property string editText: "编辑颜色"
property string redText: qsTr("Red") property string redText: "红色"
property string greenText: qsTr("Green") property string greenText: "绿色"
property string blueText: qsTr("Blue") property string blueText: "蓝色"
property string opacityText: qsTr("Opacity") property string opacityText: "透明度"
background: Rectangle{ background:
Rectangle{
id:layout_color id:layout_color
radius: 5 radius: 5
color:"#00000000" color:"#00000000"

View File

@ -134,9 +134,10 @@ T.ComboBox {
} }
} }
background:Rectangle{ background:Rectangle{
color:FluTheme.dark ? Qt.rgba(45/255,45/255,45/255,1) : Qt.rgba(249/255,249/255,249/255,1)
border.color: FluTheme.dark ? Window.active ? Qt.rgba(55/255,55/255,55/255,1):Qt.rgba(45/255,45/255,45/255,1) : Qt.rgba(226/255,229/255,234/255,1)
border.width: 1
radius: 5 radius: 5
color: FluTheme.dark ? Qt.rgba(43/255,43/255,43/255,1) : Qt.rgba(1,1,1,1)
border.color: FluTheme.dark ? Qt.rgba(26/255,26/255,26/255,1) : Qt.rgba(191/255,191/255,191/255,1)
FluShadow{ FluShadow{
radius: 5 radius: 5
} }

View File

@ -4,6 +4,7 @@ import QtQuick.Layouts 1.15
import QtQuick.Window 2.15 import QtQuick.Window 2.15
import FluentUI 1.0 import FluentUI 1.0
FluButton { FluButton {
property bool showYear: true property bool showYear: true
property var current property var current
@ -95,6 +96,8 @@ FluButton {
Menu{ Menu{
id:popup id:popup
modal: true modal: true
width: container.width
height: container.height
Overlay.modal: Item {} Overlay.modal: Item {}
enter: Transition { enter: Transition {
reversible: true reversible: true
@ -113,220 +116,227 @@ FluButton {
duration: FluTheme.animationEnabled ? 83 : 0 duration: FluTheme.animationEnabled ? 83 : 0
} }
} }
background:Rectangle{ background:Item{
radius: 5
color: FluTheme.dark ? Qt.rgba(43/255,43/255,43/255,1) : Qt.rgba(1,1,1,1)
border.color: FluTheme.dark ? Qt.rgba(26/255,26/255,26/255,1) : Qt.rgba(191/255,191/255,191/255,1)
FluShadow{ FluShadow{
radius: 5 radius: 4
} }
} }
contentItem: Item{ contentItem: Item{
id:container clip: true
implicitHeight: 340
implicitWidth: 300
MouseArea{
anchors.fill: parent
}
RowLayout{
id:layout_content
spacing: 0
width: parent.width
height: 280
Component{
id:list_delegate
Item{
height: 38
width: getListView().width
function getListView(){
if(type === 0)
return list_view_1
if(type === 1)
return list_view_2
if(type === 2)
return list_view_3
}
Rectangle{
anchors.fill: parent
anchors.topMargin: 2
anchors.bottomMargin: 2
anchors.leftMargin: 5
anchors.rightMargin: 5
color: {
if(getListView().currentIndex === position){
return item_mouse.containsMouse ? Qt.lighter(FluTheme.primaryColor,1.1): FluTheme.primaryColor
}
if(item_mouse.containsMouse){
return FluTheme.dark ? Qt.rgba(63/255,60/255,61/255,1) : Qt.rgba(237/255,237/255,242/255,1)
}
return Qt.rgba(0,0,0,0)
}
radius: 3
MouseArea{
id:item_mouse
anchors.fill: parent
hoverEnabled: true
onClicked: {
getListView().currentIndex = position
if(type === 0){
text_year.text = model
list_view_2.model = generateMonthArray(1,12)
text_month.text = list_view_2.model[list_view_2.currentIndex]
list_view_3.model = generateMonthDaysArray(list_view_1.model[list_view_1.currentIndex],list_view_2.model[list_view_2.currentIndex])
text_day.text = list_view_3.model[list_view_3.currentIndex]
}
if(type === 1){
text_month.text = model
list_view_3.model = generateMonthDaysArray(list_view_1.model[list_view_1.currentIndex],list_view_2.model[list_view_2.currentIndex])
text_day.text = list_view_3.model[list_view_3.currentIndex]
}
if(type === 2){
text_day.text = model
}
}
}
FluText{
text:model
color: {
if(getListView().currentIndex === position){
if(FluTheme.dark){
return Qt.rgba(0,0,0,1)
}else{
return Qt.rgba(1,1,1,1)
}
}else{
return FluTheme.dark ? "#FFFFFF" : "#1A1A1A"
}
}
anchors.centerIn: parent
}
}
}
}
ListView{
id:list_view_1
Layout.preferredWidth: 100
Layout.preferredHeight: parent.height - 2
Layout.alignment: Qt.AlignVCenter
boundsBehavior:Flickable.StopAtBounds
ScrollBar.vertical: FluScrollBar {}
model: generateYearArray(1924,2048)
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
visible: showYear
delegate: FluLoader{
property var model: modelData
property int type:0
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
Layout.preferredWidth: 1
Layout.preferredHeight: parent.height
color: control.dividerColor
visible: showYear
}
ListView{
id:list_view_2
Layout.preferredWidth: showYear ? 99 : 150
Layout.preferredHeight: parent.height - 2
Layout.alignment: Qt.AlignVCenter
clip: true
ScrollBar.vertical: FluScrollBar {}
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:1
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
Layout.preferredWidth: 1
Layout.preferredHeight: parent.height
color: control.dividerColor
}
ListView{
id:list_view_3
Layout.preferredWidth: showYear ? 99 : 150
Layout.preferredHeight: parent.height - 2
Layout.alignment: Qt.AlignVCenter
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:2
property int position:index
sourceComponent: list_delegate
}
}
}
Rectangle{ Rectangle{
id:layout_actions id:container
height: 60 radius: 4
color: FluTheme.dark ? Qt.rgba(32/255,32/255,32/255,1) : Qt.rgba(243/255,243/255,243/255,1) width: 300
border.color: FluTheme.dark ? Qt.rgba(26/255,26/255,26/255,1) : Qt.rgba(191/255,191/255,191/255,1) height: 340
radius: 5 color: FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(248/255,250/255,253/255,1)
anchors{ MouseArea{
bottom:parent.bottom anchors.fill: parent
left: parent.left
right: parent.right
} }
Item { FluShadow{
id:divider radius: 4
width: 1
height: parent.height
anchors.centerIn: parent
} }
FluButton{ RowLayout{
id:layout_content
spacing: 0
width: parent.width
height: 300
Component{
id:list_delegate
Item{
height:38
width:getListView().width
function getListView(){
if(type === 0)
return list_view_1
if(type === 1)
return list_view_2
if(type === 2)
return list_view_3
}
Rectangle{
anchors.fill: parent
anchors.topMargin: 2
anchors.bottomMargin: 2
anchors.leftMargin: 5
anchors.rightMargin: 5
color: {
if(getListView().currentIndex === position){
return item_mouse.containsMouse ? Qt.lighter(FluTheme.primaryColor,1.1): FluTheme.primaryColor
}
if(item_mouse.containsMouse){
return FluTheme.dark ? Qt.rgba(63/255,60/255,61/255,1) : Qt.rgba(237/255,237/255,242/255,1)
}
return FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(0,0,0,0)
}
radius: 3
MouseArea{
id:item_mouse
anchors.fill: parent
hoverEnabled: true
onClicked: {
getListView().currentIndex = position
if(type === 0){
text_year.text = model
list_view_2.model = generateMonthArray(1,12)
text_month.text = list_view_2.model[list_view_2.currentIndex]
list_view_3.model = generateMonthDaysArray(list_view_1.model[list_view_1.currentIndex],list_view_2.model[list_view_2.currentIndex])
text_day.text = list_view_3.model[list_view_3.currentIndex]
}
if(type === 1){
text_month.text = model
list_view_3.model = generateMonthDaysArray(list_view_1.model[list_view_1.currentIndex],list_view_2.model[list_view_2.currentIndex])
text_day.text = list_view_3.model[list_view_3.currentIndex]
}
if(type === 2){
text_day.text = model
}
}
}
FluText{
text:model
color: {
if(getListView().currentIndex === position){
if(FluTheme.dark){
return Qt.rgba(0,0,0,1)
}else{
return Qt.rgba(1,1,1,1)
}
}else{
return FluTheme.dark ? "#FFFFFF" : "#1A1A1A"
}
}
anchors.centerIn: parent
}
}
}
}
ListView{
id:list_view_1
width: 100
height: parent.height
boundsBehavior:Flickable.StopAtBounds
ScrollBar.vertical: FluScrollBar {}
model: generateYearArray(1924,2048)
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
visible: showYear
delegate: FluLoader{
property var model: modelData
property int type:0
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
width: 1
height: parent.height
color: control.dividerColor
}
ListView{
id:list_view_2
width: showYear ? 100 : 150
height: parent.height
clip: true
ScrollBar.vertical: FluScrollBar {}
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:1
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
width: 1
height: parent.height
color: control.dividerColor
}
ListView{
id:list_view_3
width: showYear ? 100 : 150
height: parent.height
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
Layout.alignment: Qt.AlignVCenter
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:2
property int position:index
sourceComponent: list_delegate
}
}
}
Rectangle{
width: parent.width
height: 1
anchors.top: layout_content.bottom
color: control.dividerColor
}
Rectangle{
id:layout_actions
height: 40
radius: 5
color: FluTheme.dark ? Qt.rgba(32/255,32/255,32/255,1) : Qt.rgba(243/255,243/255,243/255,1)
anchors{ anchors{
bottom:parent.bottom
left: parent.left left: parent.left
leftMargin: 20
rightMargin: 10
right: divider.left
verticalCenter: parent.verticalCenter
}
text: control.cancelText
onClicked: {
popup.close()
}
}
FluFilledButton{
anchors{
right: parent.right right: parent.right
left: divider.right
rightMargin: 20
leftMargin: 10
verticalCenter: parent.verticalCenter
} }
text: control.okText Item {
onClicked: { id:divider
d.changeFlag = false width: 1
popup.close() height: parent.height
const year = text_year.text anchors.centerIn: parent
const month = text_month.text }
const day = text_day.text FluButton{
const date = new Date() anchors{
date.setFullYear(parseInt(year)); left: parent.left
date.setMonth(parseInt(month) - 1); leftMargin: 20
date.setDate(parseInt(day)); rightMargin: 10
date.setHours(0); right: divider.left
date.setMinutes(0); verticalCenter: parent.verticalCenter
date.setSeconds(0); }
current = date text: control.cancelText
control.accepted() onClicked: {
popup.close()
}
}
FluFilledButton{
anchors{
right: parent.right
left: divider.right
rightMargin: 20
leftMargin: 10
verticalCenter: parent.verticalCenter
}
text: control.okText
onClicked: {
d.changeFlag = false
popup.close()
const year = text_year.text
const month = text_month.text
const day = text_day.text
const date = new Date()
date.setFullYear(parseInt(year));
date.setMonth(parseInt(month) - 1);
date.setDate(parseInt(day));
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
current = date
control.accepted()
}
} }
} }
} }
@ -351,7 +361,7 @@ FluButton {
text_day.text = day text_day.text = day
var pos = control.mapToItem(null, 0, 0) var pos = control.mapToItem(null, 0, 0)
if(d.window.height>pos.y+control.height+container.height){ if(d.window.height>pos.y+control.height+container.height){
popup.y = control.height-1 popup.y = control.height
} else if(pos.y>container.height){ } else if(pos.y>container.height){
popup.y = -container.height popup.y = -container.height
} else { } else {

View File

@ -778,9 +778,9 @@ Rectangle {
timer_vertical_force_layout.restart() timer_vertical_force_layout.restart()
} }
Connections{ Connections{
target: table_view target: table_model
function onRowsChanged(){ function onRowCountChanged(){
header_row_model.rows = Array.from({length: table_view.rows}, (_, i) => ({rowIndex:i+1})) header_row_model.rows = Array.from({length: table_model.rows.length}, (_, i) => ({rowIndex:i+1}))
} }
} }
Timer{ Timer{

View File

@ -111,6 +111,8 @@ FluButton {
} }
Menu{ Menu{
id:popup id:popup
width: container.width
height: container.height
modal: true modal: true
Overlay.modal: Item {} Overlay.modal: Item {}
enter: Transition { enter: Transition {
@ -130,219 +132,224 @@ FluButton {
duration: FluTheme.animationEnabled ? 83 : 0 duration: FluTheme.animationEnabled ? 83 : 0
} }
} }
background:Rectangle{ background:Item{
radius: 5
color: FluTheme.dark ? Qt.rgba(43/255,43/255,43/255,1) : Qt.rgba(1,1,1,1)
border.color: FluTheme.dark ? Qt.rgba(26/255,26/255,26/255,1) : Qt.rgba(191/255,191/255,191/255,1)
FluShadow{ FluShadow{
radius: 5 radius: 4
} }
} }
contentItem: Item{ contentItem: Item{
id:container clip: true
implicitHeight: 340
implicitWidth: 300
MouseArea{
anchors.fill: parent
}
RowLayout{
id:layout_content
spacing: 0
width: parent.width
height: 280
Component{
id:list_delegate
Item{
height:38
width:getListView().width
function getListView(){
if(type === 0)
return list_view_1
if(type === 1)
return list_view_2
if(type === 2)
return list_view_3
}
Rectangle{
anchors.fill: parent
anchors.topMargin: 2
anchors.bottomMargin: 2
anchors.leftMargin: 5
anchors.rightMargin: 5
color: {
if(getListView().currentIndex === position){
return item_mouse.containsMouse ? Qt.darker(FluTheme.primaryColor,1.1) : FluTheme.primaryColor
}
if(item_mouse.containsMouse){
return FluTheme.dark ? Qt.rgba(63/255,60/255,61/255,1) : Qt.rgba(237/255,237/255,242/255,1)
}
return Qt.rgba(0,0,0,0)
}
radius: 3
MouseArea{
id:item_mouse
anchors.fill: parent
hoverEnabled: true
onClicked: {
getListView().currentIndex = position
if(type === 0){
text_hour.text = model
}
if(type === 1){
text_minute.text = model
}
if(type === 2){
text_ampm.text = model
}
}
}
FluText{
text:model
color: {
if(getListView().currentIndex === position){
if(FluTheme.dark){
return Qt.rgba(0,0,0,1)
}else{
return Qt.rgba(1,1,1,1)
}
}else{
return FluTheme.dark ? "#FFFFFF" : "#1A1A1A"
}
}
anchors.centerIn: parent
}
}
}
}
ListView{
id:list_view_1
Layout.preferredWidth: isH ? 100 : 150
Layout.preferredHeight: parent.height-2
Layout.alignment: Qt.AlignVCenter
boundsBehavior:Flickable.StopAtBounds
ScrollBar.vertical: FluScrollBar {}
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
model: isH ? generateArray(1,12) : generateArray(0,23)
clip: true
delegate: FluLoader{
property var model: modelData
property int type:0
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
Layout.preferredWidth: 1
Layout.preferredHeight: parent.height
color: control.dividerColor
}
ListView{
id:list_view_2
Layout.preferredWidth: isH ? 99 : 150
Layout.preferredHeight: parent.height-2
Layout.alignment: Qt.AlignVCenter
model: generateArray(0,59)
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:1
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
width: 1
height: parent.height
color: control.dividerColor
visible: isH
}
ListView{
id:list_view_3
Layout.preferredWidth: 100
Layout.preferredHeight: 76
model: [control.amText,control.pmText]
clip: true
visible: isH
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
Layout.alignment: Qt.AlignVCenter
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:2
property int position:index
sourceComponent: list_delegate
}
}
}
Rectangle{ Rectangle{
id:layout_actions id:container
height: 60 height: 340
color: FluTheme.dark ? Qt.rgba(32/255,32/255,32/255,1) : Qt.rgba(243/255,243/255,243/255,1) width: 300
border.color: FluTheme.dark ? Qt.rgba(26/255,26/255,26/255,1) : Qt.rgba(191/255,191/255,191/255,1) radius: 4
radius: 5 color: FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(248/255,250/255,253/255,1)
anchors{ MouseArea{
bottom:parent.bottom anchors.fill: parent
left: parent.left
right: parent.right
} }
Item { RowLayout{
id:divider id:layout_content
width: 1 spacing: 0
height: parent.height width: parent.width
anchors.centerIn: parent height: 300
} Component{
FluButton{ id:list_delegate
anchors{ Item{
left: parent.left height:38
leftMargin: 20 width:getListView().width
rightMargin: 10 function getListView(){
right: divider.left if(type === 0)
verticalCenter: parent.verticalCenter return list_view_1
} if(type === 1)
text: control.cancelText return list_view_2
onClicked: { if(type === 2)
popup.close() return list_view_3
} }
} Rectangle{
FluFilledButton{ anchors.fill: parent
anchors{ anchors.topMargin: 2
right: parent.right anchors.bottomMargin: 2
left: divider.right anchors.leftMargin: 5
rightMargin: 20 anchors.rightMargin: 5
leftMargin: 10 color: {
verticalCenter: parent.verticalCenter if(getListView().currentIndex === position){
} return item_mouse.containsMouse ? Qt.darker(FluTheme.primaryColor,1.1) : FluTheme.primaryColor
text: control.okText }
onClicked: { if(item_mouse.containsMouse){
d.changeFlag = false return FluTheme.dark ? Qt.rgba(63/255,60/255,61/255,1) : Qt.rgba(237/255,237/255,242/255,1)
popup.close() }
const hours = text_hour.text return FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(0,0,0,0)
const minutes = text_minute.text }
const period = text_ampm.text radius: 3
const date = new Date() MouseArea{
var hours24 = parseInt(hours); id:item_mouse
if(control.hourFormat === FluTimePickerType.H){ anchors.fill: parent
if (hours === "12") { hoverEnabled: true
hours24 = (period === control.amText) ? 0 : 12; onClicked: {
} else { getListView().currentIndex = position
hours24 = (period === control.pmText) ? hours24 : hours24 + 12; if(type === 0){
text_hour.text = model
}
if(type === 1){
text_minute.text = model
}
if(type === 2){
text_ampm.text = model
}
}
}
FluText{
text:model
color: {
if(getListView().currentIndex === position){
if(FluTheme.dark){
return Qt.rgba(0,0,0,1)
}else{
return Qt.rgba(1,1,1,1)
}
}else{
return FluTheme.dark ? "#FFFFFF" : "#1A1A1A"
}
}
anchors.centerIn: parent
}
} }
} }
date.setHours(hours24); }
date.setMinutes(parseInt(minutes)); ListView{
date.setSeconds(0); id:list_view_1
current = date width: isH ? 100 : 150
control.accepted() height: parent.height
boundsBehavior:Flickable.StopAtBounds
ScrollBar.vertical: FluScrollBar {}
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
model: isH ? generateArray(1,12) : generateArray(0,23)
clip: true
delegate: FluLoader{
property var model: modelData
property int type:0
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
width: 1
height: parent.height
color: control.dividerColor
}
ListView{
id:list_view_2
width: isH ? 100 : 150
height: parent.height
model: generateArray(0,59)
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:1
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
width: 1
height: parent.height
color: control.dividerColor
visible: isH
}
ListView{
id:list_view_3
width: 100
height: 76
model: [control.amText,control.pmText]
clip: true
visible: isH
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
Layout.alignment: Qt.AlignVCenter
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:2
property int position:index
sourceComponent: list_delegate
}
}
}
Rectangle{
width: parent.width
height: 1
anchors.top: layout_content.bottom
color: control.dividerColor
}
Rectangle{
id:layout_actions
height: 40
radius: 5
color: FluTheme.dark ? Qt.rgba(32/255,32/255,32/255,1) : Qt.rgba(243/255,243/255,243/255,1)
anchors{
bottom:parent.bottom
left: parent.left
right: parent.right
}
Item {
id:divider
width: 1
height: parent.height
anchors.centerIn: parent
}
FluButton{
anchors{
left: parent.left
leftMargin: 20
rightMargin: 10
right: divider.left
verticalCenter: parent.verticalCenter
}
text: control.cancelText
onClicked: {
popup.close()
}
}
FluFilledButton{
anchors{
right: parent.right
left: divider.right
rightMargin: 20
leftMargin: 10
verticalCenter: parent.verticalCenter
}
text: control.okText
onClicked: {
d.changeFlag = false
popup.close()
const hours = text_hour.text
const minutes = text_minute.text
const period = text_ampm.text
const date = new Date()
var hours24 = parseInt(hours);
if(control.hourFormat === FluTimePickerType.H){
if (hours === "12") {
hours24 = (period === control.amText) ? 0 : 12;
} else {
hours24 = (period === control.pmText) ? hours24 : hours24 + 12;
}
}
date.setHours(hours24);
date.setMinutes(parseInt(minutes));
date.setSeconds(0);
current = date
control.accepted()
}
} }
} }
} }
@ -380,7 +387,7 @@ FluButton {
} }
var pos = control.mapToItem(null, 0, 0) var pos = control.mapToItem(null, 0, 0)
if(d.window.height>pos.y+control.height+container.height){ if(d.window.height>pos.y+control.height+container.height){
popup.y = control.height-1 popup.y = control.height
} else if(pos.y>container.height){ } else if(pos.y>container.height){
popup.y = -container.height popup.y = -container.height
} else { } else {

File diff suppressed because it is too large Load Diff

View File

@ -13,15 +13,16 @@ Button{
property color current : Qt.rgba(1,1,1,1) property color current : Qt.rgba(1,1,1,1)
signal accepted() signal accepted()
property int colorHandleRadius: 8 property int colorHandleRadius: 8
property string cancelText: qsTr("Cancel") property string cancelText: "取消"
property string okText: qsTr("OK") property string okText: "确定"
property string titleText: qsTr("Color Picker") property string titleText: "颜色选择器"
property string editText: qsTr("Edit Color") property string editText: "编辑颜色"
property string redText: qsTr("Red") property string redText: "红色"
property string greenText: qsTr("Green") property string greenText: "绿色"
property string blueText: qsTr("Blue") property string blueText: "蓝色"
property string opacityText: qsTr("Opacity") property string opacityText: "透明度"
background: Rectangle{ background:
Rectangle{
id:layout_color id:layout_color
radius: 5 radius: 5
color:"#00000000" color:"#00000000"

View File

@ -134,9 +134,10 @@ T.ComboBox {
} }
} }
background:Rectangle{ background:Rectangle{
color:FluTheme.dark ? Qt.rgba(45/255,45/255,45/255,1) : Qt.rgba(249/255,249/255,249/255,1)
border.color: FluTheme.dark ? Window.active ? Qt.rgba(55/255,55/255,55/255,1):Qt.rgba(45/255,45/255,45/255,1) : Qt.rgba(226/255,229/255,234/255,1)
border.width: 1
radius: 5 radius: 5
color: FluTheme.dark ? Qt.rgba(43/255,43/255,43/255,1) : Qt.rgba(1,1,1,1)
border.color: FluTheme.dark ? Qt.rgba(26/255,26/255,26/255,1) : Qt.rgba(191/255,191/255,191/255,1)
FluShadow{ FluShadow{
radius: 5 radius: 5
} }

View File

@ -41,7 +41,7 @@ FluButton {
id:divider_1 id:divider_1
width: 1 width: 1
x: parent.width/3 x: parent.width/3
height: parent.height - 1 height: parent.height-1
color: control.dividerColor color: control.dividerColor
visible: showYear visible: showYear
} }
@ -49,7 +49,7 @@ FluButton {
id:divider_2 id:divider_2
width: 1 width: 1
x: showYear ? parent.width*2/3 : parent.width/2 x: showYear ? parent.width*2/3 : parent.width/2
height: parent.height - 1 height: parent.height-1
color: control.dividerColor color: control.dividerColor
} }
FluText{ FluText{
@ -95,6 +95,8 @@ FluButton {
Menu{ Menu{
id:popup id:popup
modal: true modal: true
width: container.width
height: container.height
Overlay.modal: Item {} Overlay.modal: Item {}
enter: Transition { enter: Transition {
reversible: true reversible: true
@ -113,220 +115,227 @@ FluButton {
duration: FluTheme.animationEnabled ? 83 : 0 duration: FluTheme.animationEnabled ? 83 : 0
} }
} }
background:Rectangle{ background:Item{
radius: 5
color: FluTheme.dark ? Qt.rgba(43/255,43/255,43/255,1) : Qt.rgba(1,1,1,1)
border.color: FluTheme.dark ? Qt.rgba(26/255,26/255,26/255,1) : Qt.rgba(191/255,191/255,191/255,1)
FluShadow{ FluShadow{
radius: 5 radius: 4
} }
} }
contentItem: Item{ contentItem: Item{
id:container clip: true
implicitHeight: 340
implicitWidth: 300
MouseArea{
anchors.fill: parent
}
RowLayout{
id:layout_content
spacing: 0
width: parent.width
height: 280
Component{
id:list_delegate
Item{
height: 38
width: getListView().width
function getListView(){
if(type === 0)
return list_view_1
if(type === 1)
return list_view_2
if(type === 2)
return list_view_3
}
Rectangle{
anchors.fill: parent
anchors.topMargin: 2
anchors.bottomMargin: 2
anchors.leftMargin: 5
anchors.rightMargin: 5
color: {
if(getListView().currentIndex === position){
return item_mouse.containsMouse ? Qt.lighter(FluTheme.primaryColor,1.1): FluTheme.primaryColor
}
if(item_mouse.containsMouse){
return FluTheme.dark ? Qt.rgba(63/255,60/255,61/255,1) : Qt.rgba(237/255,237/255,242/255,1)
}
return Qt.rgba(0,0,0,0)
}
radius: 3
MouseArea{
id:item_mouse
anchors.fill: parent
hoverEnabled: true
onClicked: {
getListView().currentIndex = position
if(type === 0){
text_year.text = model
list_view_2.model = generateMonthArray(1,12)
text_month.text = list_view_2.model[list_view_2.currentIndex]
list_view_3.model = generateMonthDaysArray(list_view_1.model[list_view_1.currentIndex],list_view_2.model[list_view_2.currentIndex])
text_day.text = list_view_3.model[list_view_3.currentIndex]
}
if(type === 1){
text_month.text = model
list_view_3.model = generateMonthDaysArray(list_view_1.model[list_view_1.currentIndex],list_view_2.model[list_view_2.currentIndex])
text_day.text = list_view_3.model[list_view_3.currentIndex]
}
if(type === 2){
text_day.text = model
}
}
}
FluText{
text:model
color: {
if(getListView().currentIndex === position){
if(FluTheme.dark){
return Qt.rgba(0,0,0,1)
}else{
return Qt.rgba(1,1,1,1)
}
}else{
return FluTheme.dark ? "#FFFFFF" : "#1A1A1A"
}
}
anchors.centerIn: parent
}
}
}
}
ListView{
id:list_view_1
Layout.preferredWidth: 100
Layout.preferredHeight: parent.height - 2
Layout.alignment: Qt.AlignVCenter
boundsBehavior:Flickable.StopAtBounds
ScrollBar.vertical: FluScrollBar {}
model: generateYearArray(1924,2048)
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
visible: showYear
delegate: FluLoader{
property var model: modelData
property int type:0
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
Layout.preferredWidth: 1
Layout.preferredHeight: parent.height
color: control.dividerColor
visible: showYear
}
ListView{
id:list_view_2
Layout.preferredWidth: showYear ? 99 : 150
Layout.preferredHeight: parent.height - 2
Layout.alignment: Qt.AlignVCenter
clip: true
ScrollBar.vertical: FluScrollBar {}
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:1
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
Layout.preferredWidth: 1
Layout.preferredHeight: parent.height
color: control.dividerColor
}
ListView{
id:list_view_3
Layout.preferredWidth: showYear ? 99 : 150
Layout.preferredHeight: parent.height - 2
Layout.alignment: Qt.AlignVCenter
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:2
property int position:index
sourceComponent: list_delegate
}
}
}
Rectangle{ Rectangle{
id:layout_actions id:container
height: 60 radius: 4
color: FluTheme.dark ? Qt.rgba(32/255,32/255,32/255,1) : Qt.rgba(243/255,243/255,243/255,1) width: 300
border.color: FluTheme.dark ? Qt.rgba(26/255,26/255,26/255,1) : Qt.rgba(191/255,191/255,191/255,1) height: 340
radius: 5 color: FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(248/255,250/255,253/255,1)
anchors{ MouseArea{
bottom:parent.bottom anchors.fill: parent
left: parent.left
right: parent.right
} }
Item { FluShadow{
id:divider radius: 4
width: 1
height: parent.height
anchors.centerIn: parent
} }
FluButton{ RowLayout{
id:layout_content
spacing: 0
width: parent.width
height: 300
Component{
id:list_delegate
Item{
height:38
width:getListView().width
function getListView(){
if(type === 0)
return list_view_1
if(type === 1)
return list_view_2
if(type === 2)
return list_view_3
}
Rectangle{
anchors.fill: parent
anchors.topMargin: 2
anchors.bottomMargin: 2
anchors.leftMargin: 5
anchors.rightMargin: 5
color: {
if(getListView().currentIndex === position){
return item_mouse.containsMouse ? Qt.lighter(FluTheme.primaryColor,1.1): FluTheme.primaryColor
}
if(item_mouse.containsMouse){
return FluTheme.dark ? Qt.rgba(63/255,60/255,61/255,1) : Qt.rgba(237/255,237/255,242/255,1)
}
return FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(0,0,0,0)
}
radius: 3
MouseArea{
id:item_mouse
anchors.fill: parent
hoverEnabled: true
onClicked: {
getListView().currentIndex = position
if(type === 0){
text_year.text = model
list_view_2.model = generateMonthArray(1,12)
text_month.text = list_view_2.model[list_view_2.currentIndex]
list_view_3.model = generateMonthDaysArray(list_view_1.model[list_view_1.currentIndex],list_view_2.model[list_view_2.currentIndex])
text_day.text = list_view_3.model[list_view_3.currentIndex]
}
if(type === 1){
text_month.text = model
list_view_3.model = generateMonthDaysArray(list_view_1.model[list_view_1.currentIndex],list_view_2.model[list_view_2.currentIndex])
text_day.text = list_view_3.model[list_view_3.currentIndex]
}
if(type === 2){
text_day.text = model
}
}
}
FluText{
text:model
color: {
if(getListView().currentIndex === position){
if(FluTheme.dark){
return Qt.rgba(0,0,0,1)
}else{
return Qt.rgba(1,1,1,1)
}
}else{
return FluTheme.dark ? "#FFFFFF" : "#1A1A1A"
}
}
anchors.centerIn: parent
}
}
}
}
ListView{
id:list_view_1
width: 100
height: parent.height
boundsBehavior:Flickable.StopAtBounds
ScrollBar.vertical: FluScrollBar {}
model: generateYearArray(1924,2048)
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
visible: showYear
delegate: FluLoader{
property var model: modelData
property int type:0
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
width: 1
height: parent.height
color: control.dividerColor
}
ListView{
id:list_view_2
width: showYear ? 100 : 150
height: parent.height
clip: true
ScrollBar.vertical: FluScrollBar {}
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:1
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
width: 1
height: parent.height
color: control.dividerColor
}
ListView{
id:list_view_3
width: showYear ? 100 : 150
height: parent.height
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
Layout.alignment: Qt.AlignVCenter
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:2
property int position:index
sourceComponent: list_delegate
}
}
}
Rectangle{
width: parent.width
height: 1
anchors.top: layout_content.bottom
color: control.dividerColor
}
Rectangle{
id:layout_actions
height: 40
radius: 5
color: FluTheme.dark ? Qt.rgba(32/255,32/255,32/255,1) : Qt.rgba(243/255,243/255,243/255,1)
anchors{ anchors{
bottom:parent.bottom
left: parent.left left: parent.left
leftMargin: 20
rightMargin: 10
right: divider.left
verticalCenter: parent.verticalCenter
}
text: control.cancelText
onClicked: {
popup.close()
}
}
FluFilledButton{
anchors{
right: parent.right right: parent.right
left: divider.right
rightMargin: 20
leftMargin: 10
verticalCenter: parent.verticalCenter
} }
text: control.okText Item {
onClicked: { id:divider
d.changeFlag = false width: 1
popup.close() height: parent.height
const year = text_year.text anchors.centerIn: parent
const month = text_month.text }
const day = text_day.text FluButton{
const date = new Date() anchors{
date.setFullYear(parseInt(year)); left: parent.left
date.setMonth(parseInt(month) - 1); leftMargin: 20
date.setDate(parseInt(day)); rightMargin: 10
date.setHours(0); right: divider.left
date.setMinutes(0); verticalCenter: parent.verticalCenter
date.setSeconds(0); }
current = date text: control.cancelText
control.accepted() onClicked: {
popup.close()
}
}
FluFilledButton{
anchors{
right: parent.right
left: divider.right
rightMargin: 20
leftMargin: 10
verticalCenter: parent.verticalCenter
}
text: control.okText
onClicked: {
d.changeFlag = false
popup.close()
const year = text_year.text
const month = text_month.text
const day = text_day.text
const date = new Date()
date.setFullYear(parseInt(year));
date.setMonth(parseInt(month) - 1);
date.setDate(parseInt(day));
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
current = date
control.accepted()
}
} }
} }
} }
@ -351,7 +360,7 @@ FluButton {
text_day.text = day text_day.text = day
var pos = control.mapToItem(null, 0, 0) var pos = control.mapToItem(null, 0, 0)
if(d.window.height>pos.y+control.height+container.height){ if(d.window.height>pos.y+control.height+container.height){
popup.y = control.height-1 popup.y = control.height
} else if(pos.y>container.height){ } else if(pos.y>container.height){
popup.y = -container.height popup.y = -container.height
} else { } else {

View File

@ -778,9 +778,9 @@ Rectangle {
timer_vertical_force_layout.restart() timer_vertical_force_layout.restart()
} }
Connections{ Connections{
target: table_view target: table_model
function onRowsChanged(){ function onRowCountChanged(){
header_row_model.rows = Array.from({length: table_view.rows}, (_, i) => ({rowIndex:i+1})) header_row_model.rows = Array.from({length: table_model.rows.length}, (_, i) => ({rowIndex:i+1}))
} }
} }
Timer{ Timer{

View File

@ -58,14 +58,14 @@ FluButton {
id: divider_1 id: divider_1
width: 1 width: 1
x: isH ? parent.width/3 : parent.width/2 x: isH ? parent.width/3 : parent.width/2
height: parent.height - 1 height: parent.height-1
color: dividerColor color: dividerColor
} }
Rectangle{ Rectangle{
id: divider_2 id: divider_2
width: 1 width: 1
x: parent.width*2/3 x: parent.width*2/3
height: parent.height - 1 height: parent.height-1
color: dividerColor color: dividerColor
visible: isH visible: isH
} }
@ -111,6 +111,8 @@ FluButton {
} }
Menu{ Menu{
id:popup id:popup
width: container.width
height: container.height
modal: true modal: true
Overlay.modal: Item {} Overlay.modal: Item {}
enter: Transition { enter: Transition {
@ -130,219 +132,224 @@ FluButton {
duration: FluTheme.animationEnabled ? 83 : 0 duration: FluTheme.animationEnabled ? 83 : 0
} }
} }
background:Rectangle{ background:Item{
radius: 5
color: FluTheme.dark ? Qt.rgba(43/255,43/255,43/255,1) : Qt.rgba(1,1,1,1)
border.color: FluTheme.dark ? Qt.rgba(26/255,26/255,26/255,1) : Qt.rgba(191/255,191/255,191/255,1)
FluShadow{ FluShadow{
radius: 5 radius: 4
} }
} }
contentItem: Item{ contentItem: Item{
id:container clip: true
implicitHeight: 340
implicitWidth: 300
MouseArea{
anchors.fill: parent
}
RowLayout{
id:layout_content
spacing: 0
width: parent.width
height: 280
Component{
id:list_delegate
Item{
height:38
width:getListView().width
function getListView(){
if(type === 0)
return list_view_1
if(type === 1)
return list_view_2
if(type === 2)
return list_view_3
}
Rectangle{
anchors.fill: parent
anchors.topMargin: 2
anchors.bottomMargin: 2
anchors.leftMargin: 5
anchors.rightMargin: 5
color: {
if(getListView().currentIndex === position){
return item_mouse.containsMouse ? Qt.darker(FluTheme.primaryColor,1.1) : FluTheme.primaryColor
}
if(item_mouse.containsMouse){
return FluTheme.dark ? Qt.rgba(63/255,60/255,61/255,1) : Qt.rgba(237/255,237/255,242/255,1)
}
return Qt.rgba(0,0,0,0)
}
radius: 3
MouseArea{
id:item_mouse
anchors.fill: parent
hoverEnabled: true
onClicked: {
getListView().currentIndex = position
if(type === 0){
text_hour.text = model
}
if(type === 1){
text_minute.text = model
}
if(type === 2){
text_ampm.text = model
}
}
}
FluText{
text:model
color: {
if(getListView().currentIndex === position){
if(FluTheme.dark){
return Qt.rgba(0,0,0,1)
}else{
return Qt.rgba(1,1,1,1)
}
}else{
return FluTheme.dark ? "#FFFFFF" : "#1A1A1A"
}
}
anchors.centerIn: parent
}
}
}
}
ListView{
id:list_view_1
Layout.preferredWidth: isH ? 100 : 150
Layout.preferredHeight: parent.height-2
Layout.alignment: Qt.AlignVCenter
boundsBehavior:Flickable.StopAtBounds
ScrollBar.vertical: FluScrollBar {}
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
model: isH ? generateArray(1,12) : generateArray(0,23)
clip: true
delegate: FluLoader{
property var model: modelData
property int type:0
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
Layout.preferredWidth: 1
Layout.preferredHeight: parent.height
color: control.dividerColor
}
ListView{
id:list_view_2
Layout.preferredWidth: isH ? 99 : 150
Layout.preferredHeight: parent.height-2
Layout.alignment: Qt.AlignVCenter
model: generateArray(0,59)
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:1
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
width: 1
height: parent.height
color: control.dividerColor
visible: isH
}
ListView{
id:list_view_3
Layout.preferredWidth: 100
Layout.preferredHeight: 76
model: [control.amText,control.pmText]
clip: true
visible: isH
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
Layout.alignment: Qt.AlignVCenter
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:2
property int position:index
sourceComponent: list_delegate
}
}
}
Rectangle{ Rectangle{
id:layout_actions id:container
height: 60 height: 340
color: FluTheme.dark ? Qt.rgba(32/255,32/255,32/255,1) : Qt.rgba(243/255,243/255,243/255,1) width: 300
border.color: FluTheme.dark ? Qt.rgba(26/255,26/255,26/255,1) : Qt.rgba(191/255,191/255,191/255,1) radius: 4
radius: 5 color: FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(248/255,250/255,253/255,1)
anchors{ MouseArea{
bottom:parent.bottom anchors.fill: parent
left: parent.left
right: parent.right
} }
Item { RowLayout{
id:divider id:layout_content
width: 1 spacing: 0
height: parent.height width: parent.width
anchors.centerIn: parent height: 300
} Component{
FluButton{ id:list_delegate
anchors{ Item{
left: parent.left height:38
leftMargin: 20 width:getListView().width
rightMargin: 10 function getListView(){
right: divider.left if(type === 0)
verticalCenter: parent.verticalCenter return list_view_1
} if(type === 1)
text: control.cancelText return list_view_2
onClicked: { if(type === 2)
popup.close() return list_view_3
} }
} Rectangle{
FluFilledButton{ anchors.fill: parent
anchors{ anchors.topMargin: 2
right: parent.right anchors.bottomMargin: 2
left: divider.right anchors.leftMargin: 5
rightMargin: 20 anchors.rightMargin: 5
leftMargin: 10 color: {
verticalCenter: parent.verticalCenter if(getListView().currentIndex === position){
} return item_mouse.containsMouse ? Qt.darker(FluTheme.primaryColor,1.1) : FluTheme.primaryColor
text: control.okText }
onClicked: { if(item_mouse.containsMouse){
d.changeFlag = false return FluTheme.dark ? Qt.rgba(63/255,60/255,61/255,1) : Qt.rgba(237/255,237/255,242/255,1)
popup.close() }
const hours = text_hour.text return FluTheme.dark ? Qt.rgba(51/255,48/255,48/255,1) : Qt.rgba(0,0,0,0)
const minutes = text_minute.text }
const period = text_ampm.text radius: 3
const date = new Date() MouseArea{
var hours24 = parseInt(hours); id:item_mouse
if(control.hourFormat === FluTimePickerType.H){ anchors.fill: parent
if (hours === "12") { hoverEnabled: true
hours24 = (period === control.amText) ? 0 : 12; onClicked: {
} else { getListView().currentIndex = position
hours24 = (period === control.pmText) ? hours24 : hours24 + 12; if(type === 0){
text_hour.text = model
}
if(type === 1){
text_minute.text = model
}
if(type === 2){
text_ampm.text = model
}
}
}
FluText{
text:model
color: {
if(getListView().currentIndex === position){
if(FluTheme.dark){
return Qt.rgba(0,0,0,1)
}else{
return Qt.rgba(1,1,1,1)
}
}else{
return FluTheme.dark ? "#FFFFFF" : "#1A1A1A"
}
}
anchors.centerIn: parent
}
} }
} }
date.setHours(hours24); }
date.setMinutes(parseInt(minutes)); ListView{
date.setSeconds(0); id:list_view_1
current = date width: isH ? 100 : 150
control.accepted() height: parent.height
boundsBehavior:Flickable.StopAtBounds
ScrollBar.vertical: FluScrollBar {}
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
model: isH ? generateArray(1,12) : generateArray(0,23)
clip: true
delegate: FluLoader{
property var model: modelData
property int type:0
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
width: 1
height: parent.height
color: control.dividerColor
}
ListView{
id:list_view_2
width: isH ? 100 : 150
height: parent.height
model: generateArray(0,59)
clip: true
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:1
property int position:index
sourceComponent: list_delegate
}
}
Rectangle{
width: 1
height: parent.height
color: control.dividerColor
visible: isH
}
ListView{
id:list_view_3
width: 100
height: 76
model: [control.amText,control.pmText]
clip: true
visible: isH
preferredHighlightBegin: 0
preferredHighlightEnd: 0
highlightMoveDuration: 0
ScrollBar.vertical: FluScrollBar {}
Layout.alignment: Qt.AlignVCenter
boundsBehavior:Flickable.StopAtBounds
delegate: FluLoader{
property var model: modelData
property int type:2
property int position:index
sourceComponent: list_delegate
}
}
}
Rectangle{
width: parent.width
height: 1
anchors.top: layout_content.bottom
color: control.dividerColor
}
Rectangle{
id:layout_actions
height: 40
radius: 5
color: FluTheme.dark ? Qt.rgba(32/255,32/255,32/255,1) : Qt.rgba(243/255,243/255,243/255,1)
anchors{
bottom:parent.bottom
left: parent.left
right: parent.right
}
Item {
id:divider
width: 1
height: parent.height
anchors.centerIn: parent
}
FluButton{
anchors{
left: parent.left
leftMargin: 20
rightMargin: 10
right: divider.left
verticalCenter: parent.verticalCenter
}
text: control.cancelText
onClicked: {
popup.close()
}
}
FluFilledButton{
anchors{
right: parent.right
left: divider.right
rightMargin: 20
leftMargin: 10
verticalCenter: parent.verticalCenter
}
text: control.okText
onClicked: {
d.changeFlag = false
popup.close()
const hours = text_hour.text
const minutes = text_minute.text
const period = text_ampm.text
const date = new Date()
var hours24 = parseInt(hours);
if(control.hourFormat === FluTimePickerType.H){
if (hours === "12") {
hours24 = (period === control.amText) ? 0 : 12;
} else {
hours24 = (period === control.pmText) ? hours24 : hours24 + 12;
}
}
date.setHours(hours24);
date.setMinutes(parseInt(minutes));
date.setSeconds(0);
current = date
control.accepted()
}
} }
} }
} }
@ -380,7 +387,7 @@ FluButton {
} }
var pos = control.mapToItem(null, 0, 0) var pos = control.mapToItem(null, 0, 0)
if(d.window.height>pos.y+control.height+container.height){ if(d.window.height>pos.y+control.height+container.height){
popup.y = control.height-1 popup.y = control.height
} else if(pos.y>container.height){ } else if(pos.y>container.height){
popup.y = -container.height popup.y = -container.height
} else { } else {

View File

@ -70,57 +70,6 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>FluColorPicker</name>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="16"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="16"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="17"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="17"/>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="18"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="18"/>
<source>Color Picker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="19"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="19"/>
<source>Edit Color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="20"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="20"/>
<source>Red</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="21"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="21"/>
<source>Green</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="22"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="22"/>
<source>Blue</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="23"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="23"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>FluContentDialog</name> <name>FluContentDialog</name>
<message> <message>
@ -145,31 +94,31 @@
<context> <context>
<name>FluDatePicker</name> <name>FluDatePicker</name>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="10"/> <location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="11"/>
<location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="10"/> <location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="10"/>
<source>Year</source> <source>Year</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="11"/> <location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="12"/>
<location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="11"/> <location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="11"/>
<source>Month</source> <source>Month</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="12"/> <location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="13"/>
<location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="12"/> <location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="12"/>
<source>Day</source> <source>Day</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="13"/> <location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="14"/>
<location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="13"/> <location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="13"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="14"/> <location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="15"/>
<location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="14"/> <location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="14"/>
<source>OK</source> <source>OK</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -263,37 +212,31 @@
<name>FluTimePicker</name> <name>FluTimePicker</name>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/>
<source>AM</source> <source>AM</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/>
<source>PM</source> <source>PM</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/>
<source>Hour</source> <source>Hour</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/>
<source>Minute</source> <source>Minute</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/>
<source>OK</source> <source>OK</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -322,8 +265,8 @@
<context> <context>
<name>FluWindow</name> <name>FluWindow</name>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluWindow.qml" line="335"/> <location filename="Qt5/imports/FluentUI/Controls/FluWindow.qml" line="285"/>
<location filename="Qt6/imports/FluentUI/Controls/FluWindow.qml" line="334"/> <location filename="Qt6/imports/FluentUI/Controls/FluWindow.qml" line="284"/>
<source>Loading...</source> <source>Loading...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -70,57 +70,6 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>FluColorPicker</name>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="16"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="16"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="17"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="17"/>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="18"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="18"/>
<source>Color Picker</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="19"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="19"/>
<source>Edit Color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="20"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="20"/>
<source>Red</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="21"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="21"/>
<source>Green</source>
<translation type="unfinished">绿</translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="22"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="22"/>
<source>Blue</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Qt5/imports/FluentUI/Controls/FluColorPicker.qml" line="23"/>
<location filename="Qt6/imports/FluentUI/Controls/FluColorPicker.qml" line="23"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>FluContentDialog</name> <name>FluContentDialog</name>
<message> <message>
@ -145,31 +94,31 @@
<context> <context>
<name>FluDatePicker</name> <name>FluDatePicker</name>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="10"/> <location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="11"/>
<location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="10"/> <location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="10"/>
<source>Year</source> <source>Year</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="11"/> <location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="12"/>
<location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="11"/> <location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="11"/>
<source>Month</source> <source>Month</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="12"/> <location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="13"/>
<location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="12"/> <location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="12"/>
<source>Day</source> <source>Day</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="13"/> <location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="14"/>
<location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="13"/> <location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="13"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="14"/> <location filename="Qt5/imports/FluentUI/Controls/FluDatePicker.qml" line="15"/>
<location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="14"/> <location filename="Qt6/imports/FluentUI/Controls/FluDatePicker.qml" line="14"/>
<source>OK</source> <source>OK</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -263,37 +212,31 @@
<name>FluTimePicker</name> <name>FluTimePicker</name>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="11"/>
<source>AM</source> <source>AM</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="12"/>
<source>PM</source> <source>PM</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="13"/>
<source>Hour</source> <source>Hour</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="14"/>
<source>Minute</source> <source>Minute</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="15"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/> <location filename="Qt5/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/>
<location filename="Qt6/imports/FluentUI/Controls/FluTimePicker.qml" line="16"/>
<source>OK</source> <source>OK</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -322,8 +265,8 @@
<context> <context>
<name>FluWindow</name> <name>FluWindow</name>
<message> <message>
<location filename="Qt5/imports/FluentUI/Controls/FluWindow.qml" line="335"/> <location filename="Qt5/imports/FluentUI/Controls/FluWindow.qml" line="285"/>
<location filename="Qt6/imports/FluentUI/Controls/FluWindow.qml" line="334"/> <location filename="Qt6/imports/FluentUI/Controls/FluWindow.qml" line="284"/>
<source>Loading...</source> <source>Loading...</source>
<translation type="unfinished">...</translation> <translation type="unfinished">...</translation>
</message> </message>