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
cf6eecbd
You need to sign in or sign up before continuing.
Commit
cf6eecbd
authored
Nov 15, 2016
by
Ronan Abhamon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
unstable
parent
363d03e6
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
63 additions
and
37 deletions
+63
-37
App.cpp
tests/src/app/App.cpp
+2
-2
Notification.cpp
tests/src/components/notification/Notification.cpp
+43
-27
Notification.hpp
tests/src/components/notification/Notification.hpp
+1
-0
DesktopPopup.qml
tests/ui/modules/Common/Popup/DesktopPopup.qml
+10
-7
SearchBox.qml
tests/ui/modules/Common/SearchBox.qml
+1
-0
PopupStyle.qml
tests/ui/modules/Common/Styles/PopupStyle.qml
+4
-0
CallNotification.qml
tests/ui/modules/Linphone/Notifications/CallNotification.qml
+1
-0
Contacts.qml
tests/ui/views/App/MainWindow/Contacts.qml
+1
-1
No files found.
tests/src/app/App.cpp
View file @
cf6eecbd
...
...
@@ -148,8 +148,8 @@ void App::setNotificationAttributes () {
QRect
icon_rect
=
m_system_tray_icon
->
geometry
();
QRect
screen_rect
=
desktop
->
screenGeometry
();
int
x
=
icon_rect
.
x
()
+
icon_rect
.
width
()
/
2
;
int
y
=
icon_rect
.
y
()
+
icon_rect
.
height
()
/
2
;
int
x
=
icon_rect
.
x
()
/
2
+
icon_rect
.
width
()
/
2
;
int
y
=
icon_rect
.
y
()
/
2
+
icon_rect
.
height
()
/
2
;
Qt
::
Edges
edge
=
(
x
<
screen_rect
.
width
()
/
2
)
?
Qt
::
LeftEdge
:
Qt
::
RightEdge
;
edge
|=
(
y
<
screen_rect
.
height
()
/
2
)
?
Qt
::
TopEdge
:
Qt
::
BottomEdge
;
...
...
tests/src/components/notification/Notification.cpp
View file @
cf6eecbd
...
...
@@ -8,12 +8,42 @@
#define NOTIFICATION_EDGE_PROPERTY_NAME "edge"
#define NOTIFICATION_HEIGHT_PROPERTY "popupHeight"
#define NOTIFICATION_WIDTH_PROPERTY "popupWidth"
#define NOTIFICATION_OFFSET_PROPERTY_NAME "edgeOffset"
#define NOTIFICATION_SPACING 10
#define N_MAX_NOTIFICATIONS 3
// ===================================================================
// Helpers.
inline
int
getNotificationSize
(
const
QObject
&
object
,
const
char
*
property
)
{
QVariant
variant
=
object
.
property
(
property
);
bool
so_far_so_good
;
int
size
=
variant
.
toInt
(
&
so_far_so_good
);
if
(
!
so_far_so_good
||
size
<
0
)
{
qWarning
()
<<
"Unable to get notification size."
;
return
-
1
;
}
return
size
;
}
template
<
class
T
>
bool
setProperty
(
QObject
&
object
,
const
char
*
property
,
const
T
&
value
)
{
QVariant
qvariant
(
value
);
if
(
!
object
.
setProperty
(
property
,
qvariant
))
{
qWarning
()
<<
"Unable to set property `"
<<
property
<<
"`."
;
return
false
;
}
return
true
;
}
// -------------------------------------------------------------------
Notification
::
Notification
(
QObject
*
parent
)
:
QObject
(
parent
)
{
QQmlEngine
*
engine
=
App
::
getInstance
()
->
getEngine
();
...
...
@@ -41,30 +71,6 @@ Notification::~Notification () {
// -------------------------------------------------------------------
inline
int
getNotificationSize
(
const
QObject
&
object
,
const
char
*
size_property
)
{
QVariant
variant
=
object
.
property
(
size_property
);
bool
so_far_so_good
;
int
size
=
variant
.
toInt
(
&
so_far_so_good
);
if
(
!
so_far_so_good
||
size
<
0
)
{
qWarning
()
<<
"Unable to get notification size."
;
return
-
1
;
}
return
size
;
}
inline
bool
setNotificationEdge
(
QObject
&
object
,
int
value
)
{
QVariant
edge
(
value
);
if
(
!
object
.
setProperty
(
"edge"
,
edge
))
{
qWarning
()
<<
"Unable to set notification edge."
;
return
false
;
}
return
true
;
}
void
Notification
::
showCallMessage
(
int
timeout
,
const
QString
&
sip_address
...
...
@@ -75,7 +81,7 @@ void Notification::showCallMessage (
m_mutex
.
lock
();
// Check existing instances.
if
(
m_n_instances
+
1
>=
N_MAX_NOTIFICATIONS
)
{
if
(
m_n_instances
>=
N_MAX_NOTIFICATIONS
)
{
qWarning
()
<<
"Unable to create another notification"
;
m_mutex
.
unlock
();
return
;
...
...
@@ -83,13 +89,19 @@ void Notification::showCallMessage (
// Create instance and set attributes.
QObject
*
object
=
m_components
[
Notification
::
Call
]
->
create
();
int
offset
=
getNotificationSize
(
*
object
,
NOTIFICATION_HEIGHT_PROPERTY
);
if
(
!
setNotificationEdge
(
*
object
,
m_edge
))
{
if
(
offset
==
-
1
||
!::
setProperty
(
*
object
,
NOTIFICATION_EDGE_PROPERTY_NAME
,
m_edge
)
||
!::
setProperty
(
*
object
,
NOTIFICATION_OFFSET_PROPERTY_NAME
,
m_offset
)
)
{
delete
object
;
m_mutex
.
unlock
();
return
;
}
m_offset
=
(
m_n_instances
==
0
?
offset
:
offset
+
m_offset
)
+
NOTIFICATION_SPACING
;
m_n_instances
++
;
m_mutex
.
unlock
();
...
...
@@ -103,6 +115,10 @@ void Notification::showCallMessage (
m_mutex
.
lock
();
m_n_instances
--
;
if
(
m_n_instances
==
0
)
m_offset
=
0
;
m_mutex
.
unlock
();
});
}
tests/src/components/notification/Notification.hpp
View file @
cf6eecbd
...
...
@@ -31,6 +31,7 @@ private:
Qt
::
Edges
m_edge
=
Qt
::
RightEdge
|
Qt
::
TopEdge
;
QQmlComponent
*
m_components
[
MaxNbTypes
];
int
m_offset
=
0
;
int
m_n_instances
=
0
;
QMutex
m_mutex
;
};
...
...
tests/ui/modules/Common/Popup/DesktopPopup.qml
View file @
cf6eecbd
...
...
@@ -12,6 +12,9 @@ Item {
property
int
popupY
:
0
property
int
edge
:
0
property
int
edgeOffset
:
0
property
int
flags
:
Qt
.
Popup
readonly
property
alias
popupWidth
:
popup
.
width
readonly
property
alias
popupHeight
:
popup
.
height
...
...
@@ -27,7 +30,7 @@ Item {
_isOpen
=
false
}
function
_applyXEdge
(
edge
)
{
function
_applyXEdge
()
{
var
screen
=
popup
.
Screen
if
(
screen
==
null
)
{
...
...
@@ -35,13 +38,13 @@ Item {
}
if
(
edge
&
Qt
.
LeftEdge
)
{
return
0
return
PopupStyle
.
desktop
.
edgeMargin
}
return
screen
.
width
-
popup
.
width
return
screen
.
width
-
popup
.
width
-
PopupStyle
.
desktop
.
edgeMargin
}
function
_applyYEdge
(
edge
)
{
function
_applyYEdge
()
{
var
screen
=
popup
.
Screen
if
(
screen
==
null
)
{
...
...
@@ -49,10 +52,10 @@ Item {
}
if
(
edge
&
Qt
.
TopEdge
)
{
return
0
return
edgeOffset
+
PopupStyle
.
desktop
.
edgeMargin
}
return
screen
.
height
-
popup
.
height
return
screen
.
height
-
popup
.
height
-
edgeOffset
-
PopupStyle
.
desktop
.
edgeMargin
}
// -----------------------------------------------------------------
...
...
@@ -71,7 +74,7 @@ Item {
Window
{
id
:
popup
flags
:
Qt
.
SplashScreen
flags
:
wrapper
.
flags
opacity
:
0
height
:
_content
[
0
]
!=
null
?
_content
[
0
].
height
:
0
width
:
_content
[
0
]
!=
null
?
_content
[
0
].
width
:
0
...
...
tests/ui/modules/Common/SearchBox.qml
View file @
cf6eecbd
...
...
@@ -90,6 +90,7 @@ Item {
return
point
}
flags
:
Qt
.
SplashScreen
popupX
:
coords
.
x
popupY
:
coords
.
y
...
...
tests/ui/modules/Common/Styles/PopupStyle.qml
View file @
cf6eecbd
...
...
@@ -13,6 +13,10 @@ QtObject {
property
int
closingDuration
:
250
}
property
QtObject
desktop
:
QtObject
{
property
int
edgeMargin
:
10
}
property
QtObject
shadow
:
QtObject
{
property
color
color
:
Colors
.
l
property
int
horizontalOffset
:
4
...
...
tests/ui/modules/Linphone/Notifications/CallNotification.qml
View file @
cf6eecbd
...
...
@@ -5,6 +5,7 @@ import Common 1.0
DesktopPopup
{
Rectangle
{
color
:
'
red
'
width
:
200
height
:
100
}
...
...
tests/ui/views/App/MainWindow/Contacts.qml
View file @
cf6eecbd
...
...
@@ -36,7 +36,7 @@ ColumnLayout {
})
}
spacing
:
Notification
.
showCallMessage
(
10
000
,
"
toto@toto.com
"
)
||
0
spacing
:
Notification
.
showCallMessage
(
5
000
,
"
toto@toto.com
"
)
||
0
// -----------------------------------------------------------------
// Search Bar & actions.
...
...
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