update table
@ -48,5 +48,6 @@
|
|||||||
<file>Contents/ShaderEffect/Planet1.png</file>
|
<file>Contents/ShaderEffect/Planet1.png</file>
|
||||||
<file>Contents/ShaderEffect/Snail.qml</file>
|
<file>Contents/ShaderEffect/Snail.qml</file>
|
||||||
<file>Contents/ShaderEffect/SuperMario.qml</file>
|
<file>Contents/ShaderEffect/SuperMario.qml</file>
|
||||||
|
<file>Contents/General/Tables.qml</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
@ -0,0 +1,127 @@
|
|||||||
|
import QtQuick 2.9
|
||||||
|
import QtQuick.Controls 2.2
|
||||||
|
import TaoQuick 1.0
|
||||||
|
|
||||||
|
Item {
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: mainItem
|
||||||
|
width: 800
|
||||||
|
height: 600
|
||||||
|
border.color: "steelblue"
|
||||||
|
anchors.centerIn: parent
|
||||||
|
Row {
|
||||||
|
spacing: 10
|
||||||
|
CusLabel {
|
||||||
|
text: qsTr("selectCount: %1").arg(deviceAddModel.selectedCount) + trans.transString
|
||||||
|
}
|
||||||
|
CusLabel {
|
||||||
|
text: qsTr("checkedCount: %1").arg(deviceAddModel.checkedCount) + trans.transString
|
||||||
|
}
|
||||||
|
CusLabel {
|
||||||
|
text: qsTr("visibledCount: %1").arg(deviceAddModel.visibledCount) + trans.transString
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CusTextField_Search {
|
||||||
|
anchors {
|
||||||
|
right: parent.right
|
||||||
|
rightMargin: 10
|
||||||
|
top: parent.top
|
||||||
|
}
|
||||||
|
onTextChanged: {
|
||||||
|
deviceAddModel.search(text)
|
||||||
|
}
|
||||||
|
placeholderText: qsTr("Search") + trans.transString
|
||||||
|
}
|
||||||
|
CusTableHeader {
|
||||||
|
id: cusHeader
|
||||||
|
y: 50
|
||||||
|
width: parent.width
|
||||||
|
height: 30
|
||||||
|
averageCount: 4
|
||||||
|
averageSize: 1.0
|
||||||
|
dataObj: deviceAddModel
|
||||||
|
headerNames: deviceAddModel.headerRoles
|
||||||
|
headerRoles: deviceAddModel.headerRoles
|
||||||
|
widthList: cusView.widthList
|
||||||
|
xList: cusView.xList
|
||||||
|
}
|
||||||
|
CusTableView {
|
||||||
|
id: cusView
|
||||||
|
y: cusHeader.y + cusHeader.height
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height - y - 40
|
||||||
|
model: deviceAddModel
|
||||||
|
onPressed: {
|
||||||
|
doPress(mouseX, mouseY)
|
||||||
|
}
|
||||||
|
onReleased: {
|
||||||
|
doRelease()
|
||||||
|
}
|
||||||
|
onPositionChanged: {
|
||||||
|
doPositionChanged(mouseX, mouseY)
|
||||||
|
}
|
||||||
|
onDoubleClicked: {
|
||||||
|
var index = indexAt(mouseX, mouseY + contentY)
|
||||||
|
if (index < 0 || index >= count) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (cusHeader.xList[1] <= mouseX && mouseX <= cusHeader.xList[2]) {
|
||||||
|
|
||||||
|
editInput.x = cusHeader.xList[1]
|
||||||
|
editInput.y = cusView.y + (parseInt(mouseY / CusConfig.fixedHeight)) * CusConfig.fixedHeight
|
||||||
|
editInput.width = cusHeader.widthList[1]
|
||||||
|
editInput.height = CusConfig.fixedHeight
|
||||||
|
editInput.index = index
|
||||||
|
var dataObj = deviceAddModel.data(index)
|
||||||
|
editInput.text = dataObj[deviceAddModel.headerRoles[0]]
|
||||||
|
editInput.visible = true
|
||||||
|
editInput.focus = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delegate: CusTableRow {
|
||||||
|
width: cusView.width
|
||||||
|
roles: cusView.model.headerRoles
|
||||||
|
dataObj: model.display
|
||||||
|
widthList: cusHeader.widthList
|
||||||
|
xList: cusHeader.xList
|
||||||
|
onCheckedChanged: {
|
||||||
|
deviceAddModel.check(index, checked)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CusTextField {
|
||||||
|
id: editInput
|
||||||
|
visible: false
|
||||||
|
onEditingFinished: {
|
||||||
|
deviceAddModel.doUpdateName(index, text)
|
||||||
|
visible = false
|
||||||
|
}
|
||||||
|
property int index: -1
|
||||||
|
onFocusChanged: {
|
||||||
|
if (!focus) {
|
||||||
|
deviceAddModel.doUpdateName(index, text)
|
||||||
|
visible = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Column {
|
||||||
|
x: cusHeader.x + cusHeader.mouseX
|
||||||
|
y: cusView.y
|
||||||
|
visible: cusHeader.isSpliting && !cusHeader.isOut
|
||||||
|
height: cusView.height
|
||||||
|
width: 1
|
||||||
|
spacing: 2
|
||||||
|
Repeater {
|
||||||
|
model: (cusHeader.isSpliting
|
||||||
|
&& !cusHeader.isOut) ? parent.height / 6 : 0
|
||||||
|
Rectangle {
|
||||||
|
width: 1
|
||||||
|
height: 4
|
||||||
|
color: CusConfig.splitLineColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -23,7 +23,6 @@ ListModel {
|
|||||||
group: "General"
|
group: "General"
|
||||||
groupOpen: true
|
groupOpen: true
|
||||||
}
|
}
|
||||||
|
|
||||||
ListElement {
|
ListElement {
|
||||||
name: "Data Entry"
|
name: "Data Entry"
|
||||||
source: "General/DataEntrys.qml"
|
source: "General/DataEntrys.qml"
|
||||||
@ -31,6 +30,13 @@ ListModel {
|
|||||||
group: "General"
|
group: "General"
|
||||||
groupOpen: true
|
groupOpen: true
|
||||||
}
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Table"
|
||||||
|
source: "General/Tables.qml"
|
||||||
|
visible: true
|
||||||
|
group: "General"
|
||||||
|
groupOpen: true
|
||||||
|
}
|
||||||
ListElement {
|
ListElement {
|
||||||
name: "Drag Rect"
|
name: "Drag Rect"
|
||||||
source: "General/Drags.qml"
|
source: "General/Drags.qml"
|
||||||
|
@ -32,3 +32,17 @@ DeviceAddModel::DeviceAddModel(QObject *parent)
|
|||||||
};
|
};
|
||||||
setSortCallbacks(callBacks);
|
setSortCallbacks(callBacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DeviceAddModel::doUpdateName(int row, const QString &name)
|
||||||
|
{
|
||||||
|
if (row < 0 || row >= rowCount({}))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const auto &n = name.simplified();
|
||||||
|
if (n.isEmpty())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
static_cast<DeviceAddItem *>(mObjs.at(row))->setName(name);
|
||||||
|
}
|
||||||
|
@ -8,6 +8,8 @@ class DeviceAddModel : public QuickListModel
|
|||||||
public:
|
public:
|
||||||
explicit DeviceAddModel(QObject *parent = nullptr);
|
explicit DeviceAddModel(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void doUpdateName(int row, const QString &name);
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -416,7 +416,26 @@
|
|||||||
{
|
{
|
||||||
"key": "Go to",
|
"key": "Go to",
|
||||||
"value": "转到"
|
"value": "转到"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Table",
|
||||||
|
"value": "表格"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Tree",
|
||||||
|
"value": "树"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "selectCount: %1",
|
||||||
|
"value": "选中数量: %1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "checkedCount: %1",
|
||||||
|
"value": "打勾数量: %1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "visibledCount: %1",
|
||||||
|
"value": "可见数量: %1"
|
||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
BIN
src/TaoQuick/imports/TaoQuick/Images/Icon_Camera_Offline.png
Normal file
After Width: | Height: | Size: 164 B |
BIN
src/TaoQuick/imports/TaoQuick/Images/Icon_Camera_Online.png
Normal file
After Width: | Height: | Size: 164 B |
Before Width: | Height: | Size: 205 B After Width: | Height: | Size: 314 B |
BIN
src/TaoQuick/imports/TaoQuick/Images/Table_Asc_Hovered.png
Normal file
After Width: | Height: | Size: 266 B |
Before Width: | Height: | Size: 210 B After Width: | Height: | Size: 374 B |
BIN
src/TaoQuick/imports/TaoQuick/Images/Table_Desc_Hovered.png
Normal file
After Width: | Height: | Size: 262 B |
@ -111,7 +111,7 @@ QtObject {
|
|||||||
|
|
||||||
splitLineColor:"#f38d8d"
|
splitLineColor:"#f38d8d"
|
||||||
invalidColor: "#e29696"
|
invalidColor: "#e29696"
|
||||||
alterColor: "#6a6a6b"
|
alterColor: "#8a8a9b"
|
||||||
tipBackgroundColor: "#ffffff"
|
tipBackgroundColor: "#ffffff"
|
||||||
tipBorderColor: "#767676"
|
tipBorderColor: "#767676"
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ QtObject {
|
|||||||
|
|
||||||
splitLineColor:"#c62f2f"
|
splitLineColor:"#c62f2f"
|
||||||
invalidColor: "#e29696"
|
invalidColor: "#e29696"
|
||||||
alterColor: "#6a6a6b"
|
alterColor: "#8a8a9b"
|
||||||
tipBackgroundColor: "#ffffff"
|
tipBackgroundColor: "#ffffff"
|
||||||
tipBorderColor: "#767676"
|
tipBorderColor: "#767676"
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ QtObject {
|
|||||||
|
|
||||||
splitLineColor:"#c62f2f"
|
splitLineColor:"#c62f2f"
|
||||||
invalidColor: "#e29696"
|
invalidColor: "#e29696"
|
||||||
alterColor: "#6a6a6b"
|
alterColor: "#8a8a9b"
|
||||||
tipBackgroundColor: "#ffffff"
|
tipBackgroundColor: "#ffffff"
|
||||||
tipBorderColor: "#767676"
|
tipBorderColor: "#767676"
|
||||||
|
|
||||||
@ -199,7 +199,7 @@ QtObject {
|
|||||||
|
|
||||||
splitLineColor:"#c62f2f"
|
splitLineColor:"#c62f2f"
|
||||||
invalidColor: "#e29696"
|
invalidColor: "#e29696"
|
||||||
alterColor: "#6a6a6b"
|
alterColor: "#8a8a9b"
|
||||||
tipBackgroundColor: "#ffffff"
|
tipBackgroundColor: "#ffffff"
|
||||||
tipBorderColor: "#767676"
|
tipBorderColor: "#767676"
|
||||||
|
|
||||||
@ -221,7 +221,7 @@ QtObject {
|
|||||||
|
|
||||||
splitLineColor:"#c62f2f"
|
splitLineColor:"#c62f2f"
|
||||||
invalidColor: "#e29696"
|
invalidColor: "#e29696"
|
||||||
alterColor: "#6a6a6b"
|
alterColor: "#8a8a9b"
|
||||||
tipBackgroundColor: "#ffffff"
|
tipBackgroundColor: "#ffffff"
|
||||||
tipBorderColor: "#767676"
|
tipBorderColor: "#767676"
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ pragma Singleton
|
|||||||
import QtQuick 2.9
|
import QtQuick 2.9
|
||||||
|
|
||||||
QtObject {
|
QtObject {
|
||||||
readonly property int column0Width: 40
|
readonly property int column0Width: 50
|
||||||
readonly property int minWidth: 30
|
readonly property int minWidth: 30
|
||||||
readonly property int maxWidth: 400
|
readonly property int maxWidth: 400
|
||||||
function bound(minValue, midValue, maxValue) {
|
function bound(minValue, midValue, maxValue) {
|
||||||
|
@ -70,8 +70,9 @@ Item {
|
|||||||
height: CusConfig.fixedHeight
|
height: CusConfig.fixedHeight
|
||||||
CusCheckBox {
|
CusCheckBox {
|
||||||
id: checkAllBox
|
id: checkAllBox
|
||||||
anchors.centerIn: parent
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
height: CusConfig.fixedHeight
|
x: 6
|
||||||
|
height: 24
|
||||||
width: height
|
width: height
|
||||||
property bool notify: true
|
property bool notify: true
|
||||||
onCheckedChanged: {
|
onCheckedChanged: {
|
||||||
@ -104,7 +105,7 @@ Item {
|
|||||||
color: CusConfig.textColor_pressed
|
color: CusConfig.textColor_pressed
|
||||||
}
|
}
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: 1
|
width: 2
|
||||||
anchors {
|
anchors {
|
||||||
left: parent.left
|
left: parent.left
|
||||||
top: parent.top
|
top: parent.top
|
||||||
@ -121,9 +122,11 @@ Item {
|
|||||||
top: parent.top
|
top: parent.top
|
||||||
}
|
}
|
||||||
readonly property string ascUrl: CusConfig.imagePathPrefix + "Table_Asc.png"
|
readonly property string ascUrl: CusConfig.imagePathPrefix + "Table_Asc.png"
|
||||||
readonly property string ascUrl_Hovered: CusConfig.imagePathPrefix + "Table_Asc_Hover.png"
|
readonly property string ascUrl_Hovered: CusConfig.imagePathPrefix
|
||||||
|
+ "Table_Asc_Hovered.png"
|
||||||
readonly property string descUrl: CusConfig.imagePathPrefix + "Table_Desc.png"
|
readonly property string descUrl: CusConfig.imagePathPrefix + "Table_Desc.png"
|
||||||
readonly property string descUrl_Hovered: CusConfig.imagePathPrefix + "Table_DescHover.png"
|
readonly property string descUrl_Hovered: CusConfig.imagePathPrefix
|
||||||
|
+ "Table_Desc_Hovered.png"
|
||||||
|
|
||||||
property string ascImageUrl: (headerArea.containsMouse) ? ascUrl_Hovered : ascUrl
|
property string ascImageUrl: (headerArea.containsMouse) ? ascUrl_Hovered : ascUrl
|
||||||
property string descImageUrl: (headerArea.containsMouse) ? descUrl_Hovered : descUrl
|
property string descImageUrl: (headerArea.containsMouse) ? descUrl_Hovered : descUrl
|
||||||
@ -136,8 +139,11 @@ Item {
|
|||||||
id: headerArea
|
id: headerArea
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
anchors {
|
anchors {
|
||||||
fill: parent
|
left: parent.left
|
||||||
leftMargin: 4
|
leftMargin: 4
|
||||||
|
right: parent.right
|
||||||
|
top: parent.top
|
||||||
|
bottom: parent.bottom
|
||||||
}
|
}
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (dataObj.sortRole !== headerRoles[index]) {
|
if (dataObj.sortRole !== headerRoles[index]) {
|
||||||
@ -157,6 +163,7 @@ Item {
|
|||||||
width: 4
|
width: 4
|
||||||
height: parent.height
|
height: parent.height
|
||||||
enabled: index > 0
|
enabled: index > 0
|
||||||
|
hoverEnabled: true
|
||||||
anchors {
|
anchors {
|
||||||
left: parent.left
|
left: parent.left
|
||||||
}
|
}
|
||||||
|
@ -22,10 +22,9 @@ Rectangle {
|
|||||||
property var xList
|
property var xList
|
||||||
property var roles
|
property var roles
|
||||||
property color textColor: CusConfig.textColor
|
property color textColor: CusConfig.textColor
|
||||||
property bool showOnlineState: true
|
|
||||||
|
|
||||||
signal checkedChanged(bool checked)
|
signal checkedChanged(bool checked)
|
||||||
color: isSelected ? CusConfig.controlColor_pressed : ( isAlternate ? CusConfig.controlColor : CusConfig.alterColor )
|
color: isSelected ? CusConfig.controlColor_pressed : ( isAlternate ? CusConfig.controlColor : Qt.darker(CusConfig.controlColor, 1.1) )
|
||||||
Item {
|
Item {
|
||||||
id: checkBoxItem
|
id: checkBoxItem
|
||||||
width: widthList[0]
|
width: widthList[0]
|
||||||
@ -33,9 +32,10 @@ Rectangle {
|
|||||||
|
|
||||||
CusCheckBox {
|
CusCheckBox {
|
||||||
id: checkBox
|
id: checkBox
|
||||||
height: CusConfig.fixedHeight
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
x: 6
|
||||||
|
height: 24
|
||||||
width: height
|
width: height
|
||||||
anchors.centerIn: parent
|
|
||||||
property bool notify: true
|
property bool notify: true
|
||||||
onCheckedChanged: {
|
onCheckedChanged: {
|
||||||
if(notify) {
|
if(notify) {
|
||||||
@ -43,21 +43,6 @@ Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CusImage {
|
|
||||||
visible: showOnlineState
|
|
||||||
readonly property string cameraOnlineImg: CusConfig.imagePathPrefix
|
|
||||||
+ "Icon_Camera_Online.png"
|
|
||||||
readonly property string cameraOfflineImg: CusConfig.imagePathPrefix
|
|
||||||
+ "Icon_Camera_Offline.png"
|
|
||||||
source: dataObj["online"] ? cameraOnlineImg : cameraOfflineImg
|
|
||||||
width: 16
|
|
||||||
height: 16
|
|
||||||
anchors {
|
|
||||||
verticalCenter: parent.verticalCenter
|
|
||||||
left: checkBox.right
|
|
||||||
leftMargin: -10
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Repeater {
|
Repeater {
|
||||||
model: roles
|
model: roles
|
||||||
|
@ -82,6 +82,8 @@
|
|||||||
<file>Images/ComboBox_Down.png</file>
|
<file>Images/ComboBox_Down.png</file>
|
||||||
<file>Images/ellipsis.png</file>
|
<file>Images/ellipsis.png</file>
|
||||||
<file>Images/Expanded.png</file>
|
<file>Images/Expanded.png</file>
|
||||||
|
<file>Images/Icon_Camera_Offline.png</file>
|
||||||
|
<file>Images/Icon_Camera_Online.png</file>
|
||||||
<file>Images/last.png</file>
|
<file>Images/last.png</file>
|
||||||
<file>Images/left.png</file>
|
<file>Images/left.png</file>
|
||||||
<file>Images/next.png</file>
|
<file>Images/next.png</file>
|
||||||
@ -91,6 +93,8 @@
|
|||||||
<file>Images/Search_Clear.png</file>
|
<file>Images/Search_Clear.png</file>
|
||||||
<file>Images/spinner.png</file>
|
<file>Images/spinner.png</file>
|
||||||
<file>Images/Table_Asc.png</file>
|
<file>Images/Table_Asc.png</file>
|
||||||
|
<file>Images/Table_Asc_Hovered.png</file>
|
||||||
<file>Images/Table_Desc.png</file>
|
<file>Images/Table_Desc.png</file>
|
||||||
|
<file>Images/Table_Desc_Hovered.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|