mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 03:18:07 +00:00
fix #LINQT-1672 connection when another softphone is using the same sip address (try to let the OS choose the port to listen to)
fix empty root ca path : try to create file if doesn't exist fix #LINQT-1671 loading indicator call history remove clang from nightly fix #LINQT-1667 add time before closing window when call ends
This commit is contained in:
parent
f5c939d671
commit
e620af3f3e
8 changed files with 35 additions and 30 deletions
|
|
@ -34,7 +34,7 @@ ubuntu2004-makefile-gcc:
|
||||||
ubuntu2004-ninja-clang:
|
ubuntu2004-ninja-clang:
|
||||||
rules:
|
rules:
|
||||||
- !reference [.rules-merge-request-manual, rules]
|
- !reference [.rules-merge-request-manual, rules]
|
||||||
- if: $NIGHTLY_MASTER && $LINUX_NINJA
|
- if: $NIGHTLY_MASTER == null
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
||||||
CMAKE_GENERATOR: Ninja
|
CMAKE_GENERATOR: Ninja
|
||||||
|
|
@ -46,7 +46,7 @@ ubuntu2004-ninja-clang:
|
||||||
ubuntu2004-ninja-clang-small:
|
ubuntu2004-ninja-clang-small:
|
||||||
rules:
|
rules:
|
||||||
- !reference [.rules-merge-request-manual, rules]
|
- !reference [.rules-merge-request-manual, rules]
|
||||||
- if: $NIGHTLY_MASTER && $LINUX_NINJA
|
- if: $NIGHTLY_MASTER == null
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_ADVANCED_IM=NO -DENABLE_DB_STORAGE=NO -DENABLE_PQCRYPTO=OFF
|
CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_ADVANCED_IM=NO -DENABLE_DB_STORAGE=NO -DENABLE_PQCRYPTO=OFF
|
||||||
extends: ubuntu2004-ninja-clang
|
extends: ubuntu2004-ninja-clang
|
||||||
|
|
|
||||||
|
|
@ -162,6 +162,10 @@ static inline QString getAppRootCaFilePath() {
|
||||||
QString rootca = getAppPackageDataDirPath() + Constants::PathRootCa;
|
QString rootca = getAppPackageDataDirPath() + Constants::PathRootCa;
|
||||||
if (Paths::filePathExists(rootca)) { // Packaged
|
if (Paths::filePathExists(rootca)) { // Packaged
|
||||||
return rootca;
|
return rootca;
|
||||||
|
} else {
|
||||||
|
QFile rootCaFile(rootca);
|
||||||
|
if (rootCaFile.open(QIODevice::ReadWrite))
|
||||||
|
return rootca;
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,17 @@ void CoreModel::start() {
|
||||||
config->setInt("video", "capture", 1);
|
config->setInt("video", "capture", 1);
|
||||||
config->setInt("video", "display", 1);
|
config->setInt("video", "display", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO : set the real transport type when sdk will be updated
|
||||||
|
// for now, we need to let the OS choose the port to listen on
|
||||||
|
// so that the user can be connected to linphone and another softphone
|
||||||
|
// at the same time (otherwise it tries to listen on the same port as
|
||||||
|
// the other software)
|
||||||
|
auto transports = mCore->getTransports();
|
||||||
|
transports->setTcpPort(-2);
|
||||||
|
transports->setUdpPort(-2);
|
||||||
|
transports->setTlsPort(-2);
|
||||||
|
mCore->setTransports(transports);
|
||||||
mCore->enableVideoPreview(false); // SDK doesn't write the state in configuration if not ready.
|
mCore->enableVideoPreview(false); // SDK doesn't write the state in configuration if not ready.
|
||||||
config->setInt("video", "show_local", 0); // So : write ourself to turn off camera before starting the core.
|
config->setInt("video", "show_local", 0); // So : write ourself to turn off camera before starting the core.
|
||||||
QString userAgent = ToolModel::computeUserAgent(config);
|
QString userAgent = ToolModel::computeUserAgent(config);
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ SettingsModel::SettingsModel() {
|
||||||
QObject::connect(CoreModel::getInstance().get(), &CoreModel::defaultAccountChanged, this,
|
QObject::connect(CoreModel::getInstance().get(), &CoreModel::defaultAccountChanged, this,
|
||||||
[this](const std::shared_ptr<linphone::Core> &core, const std::shared_ptr<linphone::Account> account) {
|
[this](const std::shared_ptr<linphone::Core> &core, const std::shared_ptr<linphone::Account> account) {
|
||||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
setDisableMeetingsFeature(!account->getParams()->getAudioVideoConferenceFactoryAddress());
|
setDisableMeetingsFeature(account && !account->getParams()->getAudioVideoConferenceFactoryAddress());
|
||||||
});
|
});
|
||||||
auto defaultAccount = core->getDefaultAccount();
|
auto defaultAccount = core->getDefaultAccount();
|
||||||
setDisableMeetingsFeature(defaultAccount && !defaultAccount->getParams()->getAudioVideoConferenceFactoryAddress());
|
setDisableMeetingsFeature(defaultAccount && !defaultAccount->getParams()->getAudioVideoConferenceFactoryAddress());
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,7 @@ Control.Button {
|
||||||
}
|
}
|
||||||
|
|
||||||
component ButtonImage: EffectImage {
|
component ButtonImage: EffectImage {
|
||||||
|
asynchronous: mainItem.asynchronous
|
||||||
imageSource: mainItem.icon.source
|
imageSource: mainItem.icon.source
|
||||||
imageWidth: mainItem.icon.width
|
imageWidth: mainItem.icon.width
|
||||||
imageHeight: mainItem.icon.height
|
imageHeight: mainItem.icon.height
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,12 @@ ListView {
|
||||||
loading = false
|
loading = false
|
||||||
// contentY = 0
|
// contentY = 0
|
||||||
}
|
}
|
||||||
onSearchTextChanged: loading = true
|
|
||||||
|
|
||||||
model: CallHistoryProxy {
|
model: CallHistoryProxy {
|
||||||
id: callHistoryProxy
|
id: callHistoryProxy
|
||||||
|
Component.onCompleted: {
|
||||||
|
loading = true
|
||||||
|
}
|
||||||
filterText: mainItem.searchText
|
filterText: mainItem.searchText
|
||||||
onFilterTextChanged: maxDisplayItems = initialDisplayItems
|
onFilterTextChanged: maxDisplayItems = initialDisplayItems
|
||||||
initialDisplayItems: Math.max(
|
initialDisplayItems: Math.max(
|
||||||
|
|
@ -106,14 +108,22 @@ ListView {
|
||||||
currentIndex = -1
|
currentIndex = -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BusyIndicator {
|
||||||
|
anchors.horizontalCenter: mainItem.horizontalCenter
|
||||||
|
visible: mainItem.loading
|
||||||
|
height: visible ? mainItem.busyIndicatorSize : 0
|
||||||
|
width: mainItem.busyIndicatorSize
|
||||||
|
indicatorHeight: mainItem.busyIndicatorSize
|
||||||
|
indicatorWidth: mainItem.busyIndicatorSize
|
||||||
|
indicatorColor: DefaultStyle.main1_500_main
|
||||||
|
}
|
||||||
|
|
||||||
// Qt bug: sometimes, containsMouse may not be send and update on each MouseArea.
|
// Qt bug: sometimes, containsMouse may not be send and update on each MouseArea.
|
||||||
// So we need to use this variable to switch off all hovered items.
|
// So we need to use this variable to switch off all hovered items.
|
||||||
property int lastMouseContainsIndex: -1
|
property int lastMouseContainsIndex: -1
|
||||||
delegate: FocusScope {
|
delegate: FocusScope {
|
||||||
width: mainItem.width
|
width: mainItem.width
|
||||||
height: 56 * DefaultStyle.dp
|
height: 56 * DefaultStyle.dp
|
||||||
visible: !!modelData
|
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
z: 1
|
z: 1
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
@ -130,6 +140,7 @@ ListView {
|
||||||
height: 45 * DefaultStyle.dp
|
height: 45 * DefaultStyle.dp
|
||||||
isConference: modelData.core.isConference
|
isConference: modelData.core.isConference
|
||||||
shadowEnabled: false
|
shadowEnabled: false
|
||||||
|
asynchronous: false
|
||||||
}
|
}
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
|
@ -195,6 +206,7 @@ ListView {
|
||||||
icon.source: AppIcons.phone
|
icon.source: AppIcons.phone
|
||||||
focus: true
|
focus: true
|
||||||
activeFocusOnTab: false
|
activeFocusOnTab: false
|
||||||
|
asynchronous: false
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (modelData.core.isConference) {
|
if (modelData.core.isConference) {
|
||||||
var callsWindow = UtilsCpp.getCallsWindow()
|
var callsWindow = UtilsCpp.getCallsWindow()
|
||||||
|
|
|
||||||
|
|
@ -236,18 +236,6 @@ AbstractMainPage {
|
||||||
searchBar: searchBar
|
searchBar: searchBar
|
||||||
Control.ScrollBar.vertical: scrollbar
|
Control.ScrollBar.vertical: scrollbar
|
||||||
|
|
||||||
BusyIndicator {
|
|
||||||
anchors.horizontalCenter: historyListView.horizontalCenter
|
|
||||||
visible: historyListView.loading
|
|
||||||
&& historyListView.count === 0
|
|
||||||
&& searchBar.text.length === 0
|
|
||||||
height: visible ? historyListView.busyIndicatorSize : 0
|
|
||||||
width: historyListView.busyIndicatorSize
|
|
||||||
indicatorHeight: historyListView.busyIndicatorSize
|
|
||||||
indicatorWidth: historyListView.busyIndicatorSize
|
|
||||||
indicatorColor: DefaultStyle.main1_500_main
|
|
||||||
}
|
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: mainItem
|
target: mainItem
|
||||||
function onListViewUpdated() {
|
function onListViewUpdated() {
|
||||||
|
|
@ -630,17 +618,6 @@ ConferenceInfoGui{
|
||||||
searchText: mainItem.selectedRowHistoryGui ? mainItem.selectedRowHistoryGui.core.remoteAddress : ""
|
searchText: mainItem.selectedRowHistoryGui ? mainItem.selectedRowHistoryGui.core.remoteAddress : ""
|
||||||
busyIndicatorSize: 40 * DefaultStyle.dp
|
busyIndicatorSize: 40 * DefaultStyle.dp
|
||||||
|
|
||||||
BusyIndicator {
|
|
||||||
anchors.horizontalCenter: detailListView.horizontalCenter
|
|
||||||
visible: detailListView.loading
|
|
||||||
&& detailListView.count === 0
|
|
||||||
height: visible ? detailListView.busyIndicatorSize : 0
|
|
||||||
width: detailListView.busyIndicatorSize
|
|
||||||
indicatorHeight: detailListView.busyIndicatorSize
|
|
||||||
indicatorWidth: detailListView.busyIndicatorSize
|
|
||||||
indicatorColor: DefaultStyle.main1_500_main
|
|
||||||
}
|
|
||||||
|
|
||||||
delegate: Item {
|
delegate: Item {
|
||||||
width: detailListView.width
|
width: detailListView.width
|
||||||
height: 56 * DefaultStyle.dp
|
height: 56 * DefaultStyle.dp
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@ AbstractWindow {
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
id: autoCloseWindow
|
id: autoCloseWindow
|
||||||
interval: mainWindow.callTerminatedByUser ? 1000 : 2000
|
interval: mainWindow.callTerminatedByUser ? 1500 : 2500
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
UtilsCpp.closeCallsWindow()
|
UtilsCpp.closeCallsWindow()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue