diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 23f5dfbb3..d779ee270 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -31,7 +31,7 @@ Telefonnummer oder SIP-Adresse wählen - + fps_counter %1 FPS diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 9a2f50c06..ea9cf54d9 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -31,7 +31,7 @@ Choose a SIP number or address - + fps_counter %1 FPS diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 6c52d79b1..d8439a33d 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -31,7 +31,7 @@ Choisissez un numéro ou adresse SIP - + fps_counter %1 FPS diff --git a/Linphone/tool/Utils.cpp b/Linphone/tool/Utils.cpp index a99161e35..29a0fd3ad 100644 --- a/Linphone/tool/Utils.cpp +++ b/Linphone/tool/Utils.cpp @@ -445,6 +445,7 @@ VariantObject *Utils::findAvatarByAddress(const QString &address) { VariantObject *data = new VariantObject("findAvatarByAddress", ""); if (!data) return nullptr; data->makeRequest([address]() -> QVariant { + if (CoreModel::getInstance()->getCore()->getGlobalState() != linphone::GlobalState::On) return QVariant(); QString avatar; auto defaultFriendList = ToolModel::getAppFriendList(); if (!defaultFriendList) return QVariant(); @@ -469,6 +470,7 @@ VariantObject *Utils::findFriendByAddress(const QString &address) { VariantObject *data = new VariantObject("findFriendByAddress"); if (!data) return nullptr; data->makeRequest([address]() { + if (CoreModel::getInstance()->getCore()->getGlobalState() != linphone::GlobalState::On) return QVariant(); auto linFriend = ToolModel::findFriendByAddress(address); if (!linFriend) return QVariant(); auto friendCore = FriendCore::create(linFriend); @@ -490,6 +492,7 @@ VariantObject *Utils::getFriendSecurityLevel(const QString &address) { VariantObject *data = new VariantObject("getFriendAddressSecurityLevel"); if (!data) return nullptr; data->makeRequest([address]() { + if (CoreModel::getInstance()->getCore()->getGlobalState() != linphone::GlobalState::On) return QVariant(); auto defaultFriendList = ToolModel::getAppFriendList(); if (!defaultFriendList) return QVariant(); auto linphoneAddr = ToolModel::interpretUrl(address); @@ -509,6 +512,7 @@ VariantObject *Utils::getFriendAddressSecurityLevel(const QString &address) { VariantObject *data = new VariantObject("getFriendAddressSecurityLevel"); if (!data) return nullptr; data->makeRequest([address]() { + if (CoreModel::getInstance()->getCore()->getGlobalState() != linphone::GlobalState::On) return QVariant(); auto defaultFriendList = ToolModel::getAppFriendList(); if (!defaultFriendList) return QVariant(); auto linphoneAddr = ToolModel::interpretUrl(address); diff --git a/Linphone/view/Control/Display/Contact/ContactListView.qml b/Linphone/view/Control/Display/Contact/ContactListView.qml index 92489be1a..ca86cd767 100644 --- a/Linphone/view/Control/Display/Contact/ContactListView.qml +++ b/Linphone/view/Control/Display/Contact/ContactListView.qml @@ -178,6 +178,13 @@ ListView { Layout.rightMargin: mainItem.itemsRightMargin focus: true onClicked: mainItem.expanded = !mainItem.expanded + Rectangle { + anchors.fill: headerExpandButton + radius: headerExpandButton.width/2 + visible: headerExpandButton.activeFocus + opacity: 0.5 + color: DefaultStyle.main2_200 + } Accessible.name: (mainItem.expanded ? //: Shrink %1 qsTr("shrink_accessible_name") : diff --git a/Linphone/view/Control/Input/NumericPad.qml b/Linphone/view/Control/Input/NumericPad.qml index 074c7c3cb..f145c14e1 100644 --- a/Linphone/view/Control/Input/NumericPad.qml +++ b/Linphone/view/Control/Input/NumericPad.qml @@ -90,7 +90,7 @@ FocusScope { mainItem.buttonPressed("+") event.accepted = true } - if (event.key === Qt.Key_Enter) { + if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) { mainItem.launchCall() event.accepted = true } @@ -98,7 +98,7 @@ FocusScope { Keys.onPressed: (event) => { event.accepted = false - if (event.modifiers & Qt.KeypadModifier) { + if (event.modifiers & Qt.KeypadModifier || event.key === Qt.Key_Return) { handleKeyPadEvent(event) } if (event.key === Qt.Key_Backspace) { diff --git a/Linphone/view/Control/Input/SearchBar.qml b/Linphone/view/Control/Input/SearchBar.qml index f335db3d0..7a923c294 100644 --- a/Linphone/view/Control/Input/SearchBar.qml +++ b/Linphone/view/Control/Input/SearchBar.qml @@ -106,7 +106,7 @@ FocusScope { } Keys.onPressed: (event) => { event.accepted = false - if (mainItem.numericPadPopup && mainItem.numericPadPopup.opened && (event.modifiers & Qt.KeypadModifier)) { + if (mainItem.numericPadPopup && mainItem.numericPadPopup.opened && (event.modifiers & Qt.KeypadModifier || event.key === Qt.Key_Return)) { mainItem.numericPadPopup.keyPadKeyPressed(event) event.accepted = true } diff --git a/Linphone/view/Page/Main/Call/CallPage.qml b/Linphone/view/Page/Main/Call/CallPage.qml index 58786d3a1..8ecdf393c 100644 --- a/Linphone/view/Page/Main/Call/CallPage.qml +++ b/Linphone/view/Page/Main/Call/CallPage.qml @@ -219,6 +219,11 @@ AbstractMainPage { when: searchBar.text.length != 0 value: false } + Keys.onPressed: (event) => { + if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) { + mainItem.createCallFromSearchBarRequested() + } + } } Rectangle { visible: SettingsCpp.callForwardToAddress.length > 0 diff --git a/Linphone/view/Page/Window/AbstractWindow.qml b/Linphone/view/Page/Window/AbstractWindow.qml index 8ef87fdf2..7d54b0aa6 100644 --- a/Linphone/view/Page/Window/AbstractWindow.qml +++ b/Linphone/view/Page/Window/AbstractWindow.qml @@ -90,8 +90,6 @@ ApplicationWindow { RoundButton { Layout.alignment: Qt.AlignVCenter style: ButtonStyle.noBackground - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) icon.source:AppIcons.closeX onClicked: addressChooserPopup.close() } @@ -101,12 +99,25 @@ ApplicationWindow { model: VariantList { model: addressChooserPopup.contact && addressChooserPopup.contact.core.allAddresses || [] } - Layout.fillWidth: true - Layout.preferredHeight: contentHeight spacing: Utils.getSizeWithScreenRatio(10) - delegate: Item { + keyNavigationEnabled: true + Layout.fillWidth: true + activeFocusOnTab: true + onVisibleChanged: if (visible) forceActiveFocus() + onActiveFocusChanged: { + if (activeFocus) currentIndex = 0 + else currentIndex = -1 + } + Keys.onPressed: event => { + if (event.key == Qt.Key_Return || event.key == Qt.Key_Enter || event.key == Qt.Key_Space) { + addressChooserPopup.addressChosen(itemAtIndex(popuplist.currentIndex).address) + } + } + Layout.preferredHeight: contentHeight + delegate: FocusScope { width: popuplist.width height: Utils.getSizeWithScreenRatio(56) + property string address: modelData.address ColumnLayout { width: popuplist.width anchors.verticalCenter: parent.verticalCenter @@ -137,9 +148,18 @@ ApplicationWindow { color: DefaultStyle.main2_200 } } + Rectangle { + anchors.fill: parent + opacity: 0.7 + visible: index === popuplist.currentIndex + color: DefaultStyle.main2_100 + radius: Utils.getSizeWithScreenRatio(8) + } MouseArea { + id: delegateMouseArea anchors.fill: parent hoverEnabled: true + focus: true cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor onClicked: { addressChooserPopup.addressChosen(modelData.address) diff --git a/Linphone/view/Style/buttonStyle.js b/Linphone/view/Style/buttonStyle.js index 19759cb56..eda1dc96b 100644 --- a/Linphone/view/Style/buttonStyle.js +++ b/Linphone/view/Style/buttonStyle.js @@ -168,6 +168,10 @@ pressed: "#00000000", checked: "#00000000" }, + borderColor: { + normal: "#00000000", + keybaordFocused: Linphone.DefaultStyle.main2_900 + }, text: { normal: Linphone.DefaultStyle.main2_200, hovered: Linphone.DefaultStyle.main2_300, @@ -190,6 +194,10 @@ pressed: "#00000000", checked: "#00000000" }, + borderColor: { + normal: "#00000000", + keybaordFocused: Linphone.DefaultStyle.main2_900 + }, text: { normal: Linphone.DefaultStyle.main2_600, hovered: Linphone.DefaultStyle.main2_700,