Skip to content
Snippets Groups Projects

Features 3048

Merged tatiana.novikova requested to merge features-3048 into develop
2 files
+ 53
92
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 26
88
@@ -36,16 +36,16 @@ DapComboBoxForm
anchors.topMargin: paddingTopItemDelegate
anchors.leftMargin: popup.visible ? sidePaddingActive : sidePaddingNormal
anchors.rightMargin: popup.visible ? sidePaddingActive : sidePaddingNormal
border.width: 1
color: "transparent"
property int comboBoxIndex: index
property int comboBoxCurrentIndex: currentIndex
FontMetrics
{
id: comboBoxFontMetric
font: fontComboBox
}
property int comboBoxIndex: index
property int comboBoxCurrentIndex: currentIndex
Row
{
id: textRow
@@ -55,29 +55,46 @@ DapComboBoxForm
)
height: rectangleTextComboBox.height
spacing: roleInterval
Repeater
{
id: textRepeater
model: comboBoxTextRole.length
DapText
{
id: textComboBoxDelegate
width: (textRow.width - roleInterval * (comboBoxTextRole.length - 1)) / comboBoxTextRole.length
enabled: false
fontDapText: fontComboBox
textColor: hovered ? hilightColorText : normalColorText
fontDapText: (fontComboBox.length > index) ?
fontComboBox[index] :
fontComboBox[0];
textColor: hovered ? colorTextComboBox[index][1] : colorTextComboBox[index][0]
fullText: getModelData(rectangleTextComboBox.comboBoxIndex, comboBoxTextRole[index])
textElide: (elideTextComboBox.length > index) ?
elideTextComboBox[index] :
elideTextComboBox[0];
horizontalAlignment: (alignTextComboBox.length > index) ?
alignTextComboBox[index] :
alignTextComboBox[0];
Component.onCompleted:
{
if(rectangleTextComboBox.comboBoxIndex == rectangleTextComboBox.comboBoxCurrentIndex)
comboBoxFontMetric.font = (fontComboBox.length > index) ?
fontComboBox[index] :
fontComboBox[0];
if(rectangleTextComboBox.comboBoxIndex == rectangleTextComboBox.comboBoxCurrentIndex)
{
var tmp = mainRow;
tmp[index] = elText;
mainRow = tmp;
if(index == 0)
mainLineText = comboBoxFontMetric.elidedText(fullText, Text.ElideRight, rectangleTextComboBox.width, Qt.TextShowMnemonic);
if(rectangleTextComboBox.comboBoxCurrentIndex != -1)
{
if(index == 0)
mainLineText = comboBoxFontMetric.elidedText(fullText, Text.ElideRight, rectangleTextComboBox.width, Qt.TextShowMnemonic);
}
}
}
@@ -118,89 +135,10 @@ DapComboBoxForm
}
function checkElidedText(fontMetric, textMetric)
{
return textMetric.elidedText.substring(0, textMetric.elidedText.length-1) +
((fontMetric.tightBoundingRect(textMetric.elidedText.substring(0, textMetric.elidedText.length-1)).width +
fontMetric.tightBoundingRect(textMetric.text.charAt(textMetric.elidedText.length-1) + '..').width) < textMetric.elideWidth ?
(textMetric.text.charAt(textMetric.elidedText.length-1) + '..')
: '..');
}
function getModelData(rowIndex, modelRole)
{
return model.get(rowIndex)[modelRole];
}
function setModelDataWidth(rowIndex, fontMetric, rowWidth)
{
comboBoxTextRoleWidth = [0];
mainLineText = [""];
var neededWidth = 0;
for(var i = 0; i < comboBoxTextRole.length; i++)
{
mainLineText[i] = "";
comboBoxTextRoleWidth[i] = fontMetric.tightBoundingRect(getModelData(rowIndex, comboBoxTextRole[i])).width;
neededWidth += comboBoxTextRoleWidth[i];
}
neededWidth += roleInterval * (comboBoxTextRole.length - 1);
console.log("neededWidth", neededWidth, "rowWidth", rowWidth);
var oneIndex = 0;
if (neededWidth > rowWidth)
{
oneIndex = comboBoxTextRole.indexOf(mainLineRole);
if(oneIndex === -1)
{
oneIndex = comboBoxTextRole.indexOf("text");
if(oneIndex === -1)
{
oneIndex = comboBoxTextRole.indexOf("name");
if(oneIndex === -1)
oneIndex = 0;
}
}
if(comboBoxTextRoleWidth[oneIndex] < neededWidth - rowWidth)
{
comboBoxTextRoleWidth[oneIndex] = rowWidth / (comboBoxTextRole.length);
var maxWidth = 0;
var maxIndex = 0;
while(neededWidth > rowWidth)
{
maxWidth = comboBoxTextRoleWidth[0];
maxIndex = 0;
for(i = 0; i < comboBoxTextRoleWidth.length; i++)
{
if(maxWidth < comboBoxTextRoleWidth[i])
{
maxWidth = comboBoxTextRoleWidth[i];
maxIndex = i;
}
}
comboBoxTextRoleWidth[maxIndex] -= 10 * pt;
neededWidth = 0;
for(i = 0; i < comboBoxTextRoleWidth.length; i++)
neededWidth += comboBoxTextRoleWidth[i];
}
}
return true;
}
if(neededWidth < rowWidth)
{
oneIndex = comboBoxTextRole.indexOf(mainLineRole);
if(oneIndex === -1)
{
oneIndex = comboBoxTextRole.indexOf("text");
if(oneIndex === -1)
{
oneIndex = comboBoxTextRole.indexOf("name");
if(oneIndex === -1)
oneIndex = 0;
}
}
comboBoxTextRoleWidth[oneIndex] += rowWidth - neededWidth;
return true;
}
return false;
}
}
Loading