Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linphone-desktop
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
linphone-desktop
Commits
74311876
Commit
74311876
authored
Apr 03, 2017
by
Ronan Abhamon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(ui/views/App/Settings/SettingsSipAccounts): can add or update sip account
parent
5689d885
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
146 additions
and
75 deletions
+146
-75
AccountSettingsModel.cpp
...-desktop/src/components/settings/AccountSettingsModel.cpp
+11
-49
AccountSettingsModel.hpp
...-desktop/src/components/settings/AccountSettingsModel.hpp
+1
-3
SipAddressesModel.cpp
...esktop/src/components/sip-addresses/SipAddressesModel.cpp
+52
-3
SipAddressesModel.hpp
...esktop/src/components/sip-addresses/SipAddressesModel.hpp
+10
-0
SettingsSipAccountsEdit.js
...-desktop/ui/views/App/Settings/SettingsSipAccountsEdit.js
+56
-10
SettingsSipAccountsEdit.qml
...desktop/ui/views/App/Settings/SettingsSipAccountsEdit.qml
+14
-8
belle-sip
submodules/belle-sip
+1
-1
linphone
submodules/linphone
+1
-1
No files found.
linphone-desktop/src/components/settings/AccountSettingsModel.cpp
View file @
74311876
...
@@ -64,7 +64,7 @@ void AccountSettingsModel::removeProxyConfig (const shared_ptr<linphone::ProxyCo
...
@@ -64,7 +64,7 @@ void AccountSettingsModel::removeProxyConfig (const shared_ptr<linphone::ProxyCo
emit
accountSettingsUpdated
();
emit
accountSettingsUpdated
();
}
}
void
AccountSettingsModel
::
addOrUpdateProxyConfig
(
bool
AccountSettingsModel
::
addOrUpdateProxyConfig
(
const
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
&
proxy_config
,
const
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
&
proxy_config
,
const
QVariantMap
&
data
const
QVariantMap
&
data
)
{
)
{
...
@@ -78,7 +78,7 @@ void AccountSettingsModel::addOrUpdateProxyConfig (
...
@@ -78,7 +78,7 @@ void AccountSettingsModel::addOrUpdateProxyConfig (
);
);
if
(
!
address
)
{
if
(
!
address
)
{
qWarning
()
<<
QStringLiteral
(
"Unable to create sip address object from: `%1`."
).
arg
(
literal
);
qWarning
()
<<
QStringLiteral
(
"Unable to create sip address object from: `%1`."
).
arg
(
literal
);
return
;
return
false
;
}
}
proxy_config
->
setIdentityAddress
(
address
);
proxy_config
->
setIdentityAddress
(
address
);
...
@@ -86,28 +86,11 @@ void AccountSettingsModel::addOrUpdateProxyConfig (
...
@@ -86,28 +86,11 @@ void AccountSettingsModel::addOrUpdateProxyConfig (
// Server address.
// Server address.
{
{
QString
q_server_address
=
data
[
"serverAddress"
].
toString
();
QString
server_address
=
data
[
"serverAddress"
].
toString
();
string
s_server_address
=
::
Utils
::
qStringToLinphoneString
(
q_server_address
);
if
(
!
proxy_config
->
setServerAddr
(
s_server_address
))
{
if
(
proxy_config
->
setServerAddr
(
::
Utils
::
qStringToLinphoneString
(
server_address
)))
{
shared_ptr
<
linphone
::
Address
>
address
=
linphone
::
Factory
::
get
()
->
createAddress
(
s_server_address
);
qWarning
()
<<
QStringLiteral
(
"Unable to add server address: `%1`."
).
arg
(
server_address
);
if
(
!
address
)
{
return
false
;
qWarning
()
<<
QStringLiteral
(
"Unable to add server address: `%1`."
).
arg
(
q_server_address
);
return
;
}
QString
transport
=
data
[
"transport"
].
toString
();
if
(
transport
==
"TCP"
)
address
->
setTransport
(
linphone
::
TransportType
::
TransportTypeTcp
);
else
if
(
transport
==
"UDP"
)
address
->
setTransport
(
linphone
::
TransportType
::
TransportTypeTcp
);
else
address
->
setTransport
(
linphone
::
TransportType
::
TransportTypeTls
);
if
(
!
proxy_config
->
setServerAddr
(
address
->
asString
()))
{
qWarning
()
<<
QStringLiteral
(
"Unable to add server address: `%1`."
).
arg
(
q_server_address
);
return
;
}
}
}
}
}
...
@@ -126,43 +109,22 @@ void AccountSettingsModel::addOrUpdateProxyConfig (
...
@@ -126,43 +109,22 @@ void AccountSettingsModel::addOrUpdateProxyConfig (
if
(
find
(
proxy_configs
.
cbegin
(),
proxy_configs
.
cend
(),
proxy_config
)
!=
proxy_configs
.
cend
())
{
if
(
find
(
proxy_configs
.
cbegin
(),
proxy_configs
.
cend
(),
proxy_config
)
!=
proxy_configs
.
cend
())
{
if
(
proxy_config
->
done
()
==
-
1
)
{
if
(
proxy_config
->
done
()
==
-
1
)
{
qWarning
()
<<
QStringLiteral
(
"Unable to update proxy config: `%1`."
).
arg
(
literal
);
qWarning
()
<<
QStringLiteral
(
"Unable to update proxy config: `%1`."
).
arg
(
literal
);
return
;
return
false
;
}
}
}
else
if
(
core
->
addProxyConfig
(
proxy_config
)
==
-
1
)
{
}
else
if
(
core
->
addProxyConfig
(
proxy_config
)
==
-
1
)
{
qWarning
()
<<
QStringLiteral
(
"Unable to add proxy config: `%1`."
).
arg
(
literal
);
qWarning
()
<<
QStringLiteral
(
"Unable to add proxy config: `%1`."
).
arg
(
literal
);
return
;
return
false
;
}
}
emit
accountSettingsUpdated
();
emit
accountSettingsUpdated
();
return
true
;
}
}
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
AccountSettingsModel
::
createProxyConfig
()
{
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
AccountSettingsModel
::
createProxyConfig
()
{
return
CoreManager
::
getInstance
()
->
getCore
()
->
createProxyConfig
();
return
CoreManager
::
getInstance
()
->
getCore
()
->
createProxyConfig
();
}
}
QString
AccountSettingsModel
::
getTransportFromServerAddress
(
const
QString
&
server_address
)
{
const
shared_ptr
<
const
linphone
::
Address
>
address
=
linphone
::
Factory
::
get
()
->
createAddress
(
::
Utils
::
qStringToLinphoneString
(
server_address
)
);
if
(
!
address
)
return
QStringLiteral
(
""
);
switch
(
address
->
getTransport
())
{
case
linphone
:
:
TransportTypeUdp
:
return
QStringLiteral
(
"UDP"
);
case
linphone
:
:
TransportTypeTcp
:
return
QStringLiteral
(
"TCP"
);
case
linphone
:
:
TransportTypeTls
:
return
QStringLiteral
(
"TLS"
);
case
linphone
:
:
TransportTypeDtls
:
break
;
}
return
QStringLiteral
(
""
);
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
QString
AccountSettingsModel
::
getUsername
()
const
{
QString
AccountSettingsModel
::
getUsername
()
const
{
...
...
linphone-desktop/src/components/settings/AccountSettingsModel.hpp
View file @
74311876
...
@@ -47,13 +47,11 @@ public:
...
@@ -47,13 +47,11 @@ public:
Q_INVOKABLE
void
setDefaultProxyConfig
(
const
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
&
proxy_config
);
Q_INVOKABLE
void
setDefaultProxyConfig
(
const
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
&
proxy_config
);
Q_INVOKABLE
void
addOrUpdateProxyConfig
(
const
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
&
proxy_config
,
const
QVariantMap
&
data
);
Q_INVOKABLE
bool
addOrUpdateProxyConfig
(
const
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
&
proxy_config
,
const
QVariantMap
&
data
);
Q_INVOKABLE
void
removeProxyConfig
(
const
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
&
proxy_config
);
Q_INVOKABLE
void
removeProxyConfig
(
const
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
&
proxy_config
);
Q_INVOKABLE
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
createProxyConfig
();
Q_INVOKABLE
std
::
shared_ptr
<
linphone
::
ProxyConfig
>
createProxyConfig
();
Q_INVOKABLE
QString
getTransportFromServerAddress
(
const
QString
&
server_address
);
signals:
signals:
void
accountSettingsUpdated
();
void
accountSettingsUpdated
();
...
...
linphone-desktop/src/components/sip-addresses/SipAddressesModel.cpp
View file @
74311876
...
@@ -140,6 +140,57 @@ QString SipAddressesModel::interpretUrl (const QString &sip_address) const {
...
@@ -140,6 +140,57 @@ QString SipAddressesModel::interpretUrl (const QString &sip_address) const {
return
l_address
?
::
Utils
::
linphoneStringToQString
(
l_address
->
asStringUriOnly
())
:
""
;
return
l_address
?
::
Utils
::
linphoneStringToQString
(
l_address
->
asStringUriOnly
())
:
""
;
}
}
QString
SipAddressesModel
::
getTransportFromSipAddress
(
const
QString
&
sip_address
)
const
{
const
shared_ptr
<
const
linphone
::
Address
>
address
=
linphone
::
Factory
::
get
()
->
createAddress
(
::
Utils
::
qStringToLinphoneString
(
sip_address
)
);
if
(
!
address
)
return
QStringLiteral
(
""
);
switch
(
address
->
getTransport
())
{
case
linphone
:
:
TransportTypeUdp
:
return
QStringLiteral
(
"UDP"
);
case
linphone
:
:
TransportTypeTcp
:
return
QStringLiteral
(
"TCP"
);
case
linphone
:
:
TransportTypeTls
:
return
QStringLiteral
(
"TLS"
);
case
linphone
:
:
TransportTypeDtls
:
return
QStringLiteral
(
"DTLS"
);
}
return
QStringLiteral
(
""
);
}
QString
SipAddressesModel
::
addTransportToSipAddress
(
const
QString
&
sip_address
,
const
QString
&
transport
)
const
{
shared_ptr
<
linphone
::
Address
>
address
=
linphone
::
Factory
::
get
()
->
createAddress
(
::
Utils
::
qStringToLinphoneString
(
sip_address
)
);
if
(
!
address
)
return
""
;
QString
_transport
=
transport
.
toUpper
();
if
(
_transport
==
"TCP"
)
address
->
setTransport
(
linphone
::
TransportType
::
TransportTypeTcp
);
else
if
(
_transport
==
"UDP"
)
address
->
setTransport
(
linphone
::
TransportType
::
TransportTypeUdp
);
else
if
(
_transport
==
"TLS"
)
address
->
setTransport
(
linphone
::
TransportType
::
TransportTypeTls
);
else
address
->
setTransport
(
linphone
::
TransportType
::
TransportTypeDtls
);
return
::
Utils
::
linphoneStringToQString
(
address
->
asString
());
}
bool
SipAddressesModel
::
sipAddressIsValid
(
const
QString
&
sip_address
)
const
{
shared_ptr
<
linphone
::
Address
>
address
=
linphone
::
Factory
::
get
()
->
createAddress
(
::
Utils
::
qStringToLinphoneString
(
sip_address
)
);
return
!!
address
;
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
bool
SipAddressesModel
::
removeRow
(
int
row
,
const
QModelIndex
&
parent
)
{
bool
SipAddressesModel
::
removeRow
(
int
row
,
const
QModelIndex
&
parent
)
{
...
@@ -309,9 +360,7 @@ void SipAddressesModel::addOrUpdateSipAddress (QVariantMap &map, const shared_pt
...
@@ -309,9 +360,7 @@ void SipAddressesModel::addOrUpdateSipAddress (QVariantMap &map, const shared_pt
}
}
void
SipAddressesModel
::
addOrUpdateSipAddress
(
QVariantMap
&
map
,
const
shared_ptr
<
linphone
::
ChatMessage
>
&
message
)
{
void
SipAddressesModel
::
addOrUpdateSipAddress
(
QVariantMap
&
map
,
const
shared_ptr
<
linphone
::
ChatMessage
>
&
message
)
{
// FIXME: Bug in the core, count is incremented after this function call.
int
count
=
message
->
getChatRoom
()
->
getUnreadMessagesCount
();
// So... +1!
int
count
=
message
->
getChatRoom
()
->
getUnreadMessagesCount
()
+
1
;
map
[
"timestamp"
]
=
QDateTime
::
fromMSecsSinceEpoch
(
message
->
getTime
()
*
1000
);
map
[
"timestamp"
]
=
QDateTime
::
fromMSecsSinceEpoch
(
message
->
getTime
()
*
1000
);
map
[
"unreadMessagesCount"
]
=
count
;
map
[
"unreadMessagesCount"
]
=
count
;
...
...
linphone-desktop/src/components/sip-addresses/SipAddressesModel.hpp
View file @
74311876
...
@@ -50,8 +50,18 @@ public:
...
@@ -50,8 +50,18 @@ public:
Q_INVOKABLE
ContactModel
*
mapSipAddressToContact
(
const
QString
&
sip_address
)
const
;
Q_INVOKABLE
ContactModel
*
mapSipAddressToContact
(
const
QString
&
sip_address
)
const
;
Q_INVOKABLE
SipAddressObserver
*
getSipAddressObserver
(
const
QString
&
sip_address
);
Q_INVOKABLE
SipAddressObserver
*
getSipAddressObserver
(
const
QString
&
sip_address
);
// ---------------------------------------------------------------------------
// Sip addresses helpers.
// ---------------------------------------------------------------------------
Q_INVOKABLE
QString
interpretUrl
(
const
QString
&
sip_address
)
const
;
Q_INVOKABLE
QString
interpretUrl
(
const
QString
&
sip_address
)
const
;
Q_INVOKABLE
QString
getTransportFromSipAddress
(
const
QString
&
sip_address
)
const
;
Q_INVOKABLE
QString
addTransportToSipAddress
(
const
QString
&
sip_address
,
const
QString
&
transport
)
const
;
Q_INVOKABLE
bool
sipAddressIsValid
(
const
QString
&
sip_address
)
const
;
// ---------------------------------------------------------------------------
private:
private:
bool
removeRow
(
int
row
,
const
QModelIndex
&
parent
=
QModelIndex
());
bool
removeRow
(
int
row
,
const
QModelIndex
&
parent
=
QModelIndex
());
bool
removeRows
(
int
row
,
int
count
,
const
QModelIndex
&
parent
=
QModelIndex
())
override
;
bool
removeRows
(
int
row
,
int
count
,
const
QModelIndex
&
parent
=
QModelIndex
())
override
;
...
...
linphone-desktop/ui/views/App/Settings/SettingsSipAccountsEdit.js
View file @
74311876
...
@@ -36,20 +36,23 @@ function initForm (account) {
...
@@ -36,20 +36,23 @@ function initForm (account) {
registerEnabled
.
checked
=
config
.
registerEnabled
registerEnabled
.
checked
=
config
.
registerEnabled
publishPresence
.
checked
=
config
.
publishPresence
publishPresence
.
checked
=
config
.
publishPresence
avpfEnabled
.
checked
=
config
.
avpfEnabled
avpfEnabled
.
checked
=
config
.
avpfEnabled
}
function
handleServerAddressChanged
(
address
)
{
if
(
account
)
{
var
newTransport
=
Linphone
.
AccountSettingsModel
.
getTransportFromServerAddress
(
address
)
dialog
.
_sipAddressOk
=
true
if
(
newTransport
.
length
>
0
)
{
dialog
.
_serverAddressOk
=
true
transport
.
currentIndex
=
Utils
.
findIndex
(
transport
.
model
,
function
(
value
)
{
return
value
===
newTransport
})
}
}
dialog
.
_routeOk
=
true
}
function
formIsValid
()
{
return
dialog
.
_sipAddressOk
&&
dialog
.
_serverAddressOk
&&
dialog
.
_routeOk
}
}
// -----------------------------------------------------------------------------
function
validProxyConfig
()
{
function
validProxyConfig
()
{
// TODO: Display errors on the form (if necessary).
if
(
Linphone
.
AccountSettingsModel
.
addOrUpdateProxyConfig
(
proxyConfig
,
{
Linphone
.
AccountSettingsModel
.
addOrUpdateProxyConfig
(
proxyConfig
,
{
sipAddress
:
sipAddress
.
text
,
sipAddress
:
sipAddress
.
text
,
serverAddress
:
serverAddress
.
text
,
serverAddress
:
serverAddress
.
text
,
registrationDuration
:
registrationDuration
.
text
,
registrationDuration
:
registrationDuration
.
text
,
...
@@ -60,5 +63,48 @@ function validProxyConfig () {
...
@@ -60,5 +63,48 @@ function validProxyConfig () {
registerEnabled
:
registerEnabled
.
checked
,
registerEnabled
:
registerEnabled
.
checked
,
publishPresence
:
publishPresence
.
checked
,
publishPresence
:
publishPresence
.
checked
,
avpfEnabled
:
avpfEnabled
.
checked
avpfEnabled
:
avpfEnabled
.
checked
}))
{
dialog
.
exit
(
1
)
}
else
{
// TODO: Display errors on the form (if necessary).
}
}
// -----------------------------------------------------------------------------
function
handleRouteChanged
(
route
)
{
dialog
.
_routeOk
=
route
.
length
===
0
||
Linphone
.
SipAddressesModel
.
sipAddressIsValid
(
route
)
}
function
handleServerAddressChanged
(
address
)
{
if
(
address
.
length
===
0
)
{
dialog
.
_serverAddressOk
=
false
return
}
var
newTransport
=
Linphone
.
SipAddressesModel
.
getTransportFromSipAddress
(
address
)
if
(
newTransport
.
length
>
0
)
{
transport
.
currentIndex
=
Utils
.
findIndex
(
transport
.
model
,
function
(
value
)
{
return
value
===
newTransport
})
})
dialog
.
_serverAddressOk
=
true
}
else
{
dialog
.
_serverAddressOk
=
false
}
}
function
handleSipAddressChanged
(
address
)
{
dialog
.
_sipAddressOk
=
address
.
length
>
0
&&
Linphone
.
SipAddressesModel
.
sipAddressIsValid
(
address
)
}
function
handleTransportChanged
(
transport
)
{
var
newServerAddress
=
Linphone
.
SipAddressesModel
.
addTransportToSipAddress
(
serverAddress
.
text
,
transport
)
if
(
newServerAddress
.
length
>
0
)
{
serverAddress
.
text
=
newServerAddress
dialog
.
_serverAddressOk
=
true
}
else
{
dialog
.
_serverAddressOk
=
false
}
}
}
linphone-desktop/ui/views/App/Settings/SettingsSipAccountsEdit.qml
View file @
74311876
import
QtQuick
2.7
import
QtQuick
2.7
import
Common
1.0
import
Common
1.0
import
Linphone
1.0
import
Utils
1.0
import
App
.
Styles
1.0
import
App
.
Styles
1.0
...
@@ -15,6 +13,10 @@ DialogPlus {
...
@@ -15,6 +13,10 @@ DialogPlus {
property
var
account
// Optional.
property
var
account
// Optional.
property
bool
_sipAddressOk
:
false
property
bool
_serverAddressOk
:
false
property
bool
_routeOk
:
false
buttons
:
[
buttons
:
[
TextButtonA
{
TextButtonA
{
text
:
qsTr
(
'
cancel
'
)
text
:
qsTr
(
'
cancel
'
)
...
@@ -22,13 +24,10 @@ DialogPlus {
...
@@ -22,13 +24,10 @@ DialogPlus {
onClicked
:
exit
(
0
)
onClicked
:
exit
(
0
)
},
},
TextButtonB
{
TextButtonB
{
enabled
:
sipAddress
.
length
>
0
&&
serverAddress
.
length
>
0
enabled
:
Logic
.
formIsValid
()
text
:
qsTr
(
'
confirm
'
)
text
:
qsTr
(
'
confirm
'
)
onClicked
:
{
onClicked
:
Logic
.
validProxyConfig
()
Logic
.
validProxyConfig
()
exit
(
1
)
}
}
}
]
]
...
@@ -57,6 +56,8 @@ DialogPlus {
...
@@ -57,6 +56,8 @@ DialogPlus {
TextField
{
TextField
{
id
:
sipAddress
id
:
sipAddress
onTextChanged
:
Logic
.
handleSipAddressChanged
(
text
)
}
}
}
}
}
}
...
@@ -90,7 +91,10 @@ DialogPlus {
...
@@ -90,7 +91,10 @@ DialogPlus {
ComboBox
{
ComboBox
{
id
:
transport
id
:
transport
model
:
[
'
UDP
'
,
'
TCP
'
,
'
TLS
'
]
enabled
:
dialog
.
_serverAddressOk
model
:
[
'
UDP
'
,
'
TCP
'
,
'
TLS
'
,
'
DTLS
'
]
onActivated
:
Logic
.
handleTransportChanged
(
model
[
index
])
}
}
}
}
}
}
...
@@ -101,6 +105,8 @@ DialogPlus {
...
@@ -101,6 +105,8 @@ DialogPlus {
TextField
{
TextField
{
id
:
route
id
:
route
onTextChanged
:
Logic
.
handleRouteChanged
(
text
)
}
}
}
}
}
}
...
...
belle-sip
@
fd7a289c
Subproject commit
3bd0d610e68c6282a470339b82e1e75d937e050d
Subproject commit
fd7a289c80d3285684ac7bdfd6528d93f94d895f
linphone
@
5e02b53e
Subproject commit
f40bc26db4e92e61e617517c672f9a92e62f21a6
Subproject commit
5e02b53ee66b73e64bfc41e6ac2ed74296f42f60
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment