1
0
Fork 0
mirror of https://git.jami.net/savoirfairelinux/jami-client-qt.git synced 2025-07-17 14:05:24 +02:00

contextmenu: various fixes + simplify

Change-Id: Ibf10c91d4f875e9e346003c6fe9797325cf23c4f
This commit is contained in:
Andreas Traczyk 2023-11-27 08:09:14 -05:00
parent bb8f4cc3a7
commit d5bacf6b9f
3 changed files with 39 additions and 43 deletions

View file

@ -58,34 +58,28 @@ Menu {
menuItems[i].itemRealWidth = menuPreferredWidth; menuItems[i].itemRealWidth = menuPreferredWidth;
if (menuItemsPreferredHeight) if (menuItemsPreferredHeight)
menuItems[i].itemPreferredHeight = menuItemsPreferredHeight; menuItems[i].itemPreferredHeight = menuItemsPreferredHeight;
var menuSeparatorComponent, menuSeparatorComponentObj;
if (i !== menuItems.length - 1) { if (i !== menuItems.length - 1) {
var menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root); menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root);
var menuSeparatorComponentObj = menuSeparatorComponent.createObject(); menuSeparatorComponentObj = menuSeparatorComponent.createObject();
generalMenuSeparatorList.push(menuSeparatorComponentObj); generalMenuSeparatorList.push(menuSeparatorComponentObj);
root.addItem(menuSeparatorComponentObj); root.addItem(menuSeparatorComponentObj);
} }
if (menuItems[i].addMenuSeparatorAfter) { if (menuItems[i].addMenuSeparatorAfter) {
var menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root); menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root);
var menuSeparatorComponentObj = menuSeparatorComponent.createObject(root, { menuSeparatorComponentObj = menuSeparatorComponent.createObject(root, {
"separatorColor": "#DEDEDE", "separatorColor": "#DEDEDE",
"separatorPreferredHeight": 0 "separatorPreferredHeight": 0
}); });
generalMenuSeparatorList.push(menuSeparatorComponentObj); generalMenuSeparatorList.push(menuSeparatorComponentObj);
root.addItem(menuSeparatorComponentObj); root.addItem(menuSeparatorComponentObj);
var menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root); menuSeparatorComponentObj = menuSeparatorComponent.createObject();
var menuSeparatorComponentObj = menuSeparatorComponent.createObject();
generalMenuSeparatorList.push(menuSeparatorComponentObj); generalMenuSeparatorList.push(menuSeparatorComponentObj);
root.addItem(menuSeparatorComponentObj); root.addItem(menuSeparatorComponentObj);
} }
} }
} }
root.addItem(menuBottomBorder); root.addItem(menuBottomBorder);
root.open();
}
onVisibleChanged: {
if (!visible)
root.close();
} }
font.pointSize: JamiTheme.menuFontSize font.pointSize: JamiTheme.menuFontSize

View file

@ -56,6 +56,7 @@ Loader {
contextMenu.menuItemsPreferredHeight = contextMenuItemPreferredHeight; contextMenu.menuItemsPreferredHeight = contextMenuItemPreferredHeight;
contextMenu.menuSeparatorPreferredHeight = contextMenuSeparatorPreferredHeight; contextMenu.menuSeparatorPreferredHeight = contextMenuSeparatorPreferredHeight;
contextMenu.loadMenuItems(menuItemsToLoad); contextMenu.loadMenuItems(menuItemsToLoad);
contextMenu.open();
} }
} }
} }

View file

@ -51,7 +51,12 @@ RowLayout {
signal showMapClicked signal showMapClicked
signal emojiButtonClicked signal emojiButtonClicked
height: showTypo || multiLine ? messageBarTextArea.height + 25 + 3 * marginSize + 1 : textAreaObj.height + marginSize + 1 height: {
if (showTypo || multiLine)
return messageBarTextArea.height + 25 + 3 * marginSize + 1
else
return textAreaObj.height + marginSize + 1
}
Rectangle { Rectangle {
@ -67,11 +72,16 @@ RowLayout {
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.bottomMargin: marginSize / 2 anchors.bottomMargin: marginSize / 2
// Used to choose the correct color for the button.
readonly property bool highlight: down || hovered
background: Rectangle { background: Rectangle {
implicitWidth: showMoreButton.width implicitWidth: showMoreButton.width
implicitHeight: showMoreButton.height implicitHeight: showMoreButton.height
radius: 5 radius: 5
color: JamiTheme.transparentColor color: showMoreButton.highlight ?
JamiTheme.hoveredButtonColor :
JamiTheme.transparentColor
} }
MaterialToolTip { MaterialToolTip {
@ -80,7 +90,7 @@ RowLayout {
parent: showMoreButton parent: showMoreButton
visible: showMoreButton.hovered && (text.length > 0) visible: showMoreButton.hovered && (text.length > 0)
delay: Qt.styleHints.mousePressAndHoldInterval delay: Qt.styleHints.mousePressAndHoldInterval
text: JamiStrings.showMore text: showMoreButton.down ? JamiStrings.showLess : JamiStrings.showMore
} }
indicator: ResponsiveImage { indicator: ResponsiveImage {
@ -93,28 +103,29 @@ RowLayout {
source: JamiResources.more_menu_black_24dp_svg source: JamiResources.more_menu_black_24dp_svg
color: JamiTheme.chatViewFooterImgColor color: showMoreButton.highlight ?
JamiTheme.chatViewFooterImgHoverColor :
JamiTheme.chatViewFooterImgColor;
} }
onHoveredChanged: { Component {
if (!sharePopup.opened) { id: sharePopupComp
showMoreButton.indicator.color = hovered ? JamiTheme.chatViewFooterImgHoverColor : JamiTheme.chatViewFooterImgColor; ShareMenu {
showMoreButton.background.color = hovered ? JamiTheme.hoveredButtonColor : JamiTheme.transparentColor; id: sharePopup
onAudioRecordMessageButtonClicked: root.audioRecordMessageButtonClicked()
onVideoRecordMessageButtonClicked: root.videoRecordMessageButtonClicked()
onShowMapClicked: root.showMapClicked()
modelList: listViewMoreButton.menuMoreButton
y: showMoreButton.y + 31
x: showMoreButton.x - 3
} }
toolTipMoreButton.text = sharePopup.opened ? JamiStrings.showLess : JamiStrings.showMore;
} }
popup: ShareMenu { popup: ShareMenu {
id: sharePopup id: sharePopup
onAudioRecordMessageButtonClicked: { onAudioRecordMessageButtonClicked: root.audioRecordMessageButtonClicked()
root.audioRecordMessageButtonClicked(); onVideoRecordMessageButtonClicked: root.videoRecordMessageButtonClicked()
} onShowMapClicked: root.showMapClicked()
onVideoRecordMessageButtonClicked: {
root.videoRecordMessageButtonClicked();
}
onShowMapClicked: {
root.showMapClicked();
}
modelList: listViewMoreButton.menuMoreButton modelList: listViewMoreButton.menuMoreButton
y: showMoreButton.y + 31 y: showMoreButton.y + 31
x: showMoreButton.x - 3 x: showMoreButton.x - 3
@ -122,14 +133,6 @@ RowLayout {
} }
} }
Connections {
target: sharePopup
function onOpenedChanged() {
showMoreButton.indicator.color = (showMoreButton.parent && showMoreButton.parent.hovered) || (sharePopup != null && sharePopup.opened) ? JamiTheme.chatViewFooterImgHoverColor : JamiTheme.chatViewFooterImgColor;
showMoreButton.background.color = (showMoreButton.parent && showMoreButton.parent.hovered) || sharePopup.opened ? JamiTheme.hoveredButtonColor : JamiTheme.transparentColor;
}
}
Rectangle { Rectangle {
id: rectangle id: rectangle
@ -349,8 +352,6 @@ RowLayout {
} }
var selectedText = text.substring(start - char1.length, end + char2.length); var selectedText = text.substring(start - char1.length, end + char2.length);
return (selectedText.startsWith(char1) && selectedText.endsWith(char2)); return (selectedText.startsWith(char1) && selectedText.endsWith(char2));
var res = regex.test(text.substring(start - char1.length, end + char2.length));
return res && start - char1.length >= 0 && end + char2.length <= text.length;
} }
function isStarStyle(text, selectionStart, selectionEnd, type) { function isStarStyle(text, selectionStart, selectionEnd, type) {
@ -836,14 +837,14 @@ RowLayout {
toolTipText: modelData.shortcutText toolTipText: modelData.shortcutText
shortcutKey: modelData.shortcutKey shortcutKey: modelData.shortcutKey
hasShortcut: modelData.hasShortcut != null ? modelData.hasShortcut : true hasShortcut: modelData.hasShortcut ? true : false
source: modelData.iconSrc source: modelData.iconSrc
focusPolicy: Qt.TabFocus focusPolicy: Qt.TabFocus
normalColor: { normalColor: {
if (showPreview) { if (showPreview) {
return JamiTheme.primaryBackgroundColor; return JamiTheme.primaryBackgroundColor;
} else if (modelData.normalColor != null) { } else if (modelData.normalColor) {
return modelData.normalColor; return modelData.normalColor;
} else if (modelData.isStyle) { } else if (modelData.isStyle) {
return JamiTheme.hoveredButtonColor; return JamiTheme.hoveredButtonColor;
@ -856,7 +857,7 @@ RowLayout {
return JamiTheme.chatViewFooterImgDisableColor; return JamiTheme.chatViewFooterImgDisableColor;
} else if (hovered) { } else if (hovered) {
return JamiTheme.chatViewFooterImgHoverColor; return JamiTheme.chatViewFooterImgHoverColor;
} else if (modelData.imageColor != null) { } else if (modelData.imageColor !== null) {
return modelData.imageColor; return modelData.imageColor;
} else if (modelData.isStyle) { } else if (modelData.isStyle) {
return JamiTheme.chatViewFooterImgHoverColor; return JamiTheme.chatViewFooterImgHoverColor;