Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
glacier-home
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
NemoMobile
glacier-home
Commits
e932f7bc
Unverified
Commit
e932f7bc
authored
May 17, 2018
by
Aleksi Suomalainen
Committed by
GitHub
May 17, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #75 from neochapay/master
Update search panel
parents
3f5bc9c9
8442ef11
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
472 additions
and
337 deletions
+472
-337
AppLauncher.qml
src/qml/AppLauncher.qml
+131
-256
CloseButton.qml
src/qml/CloseButton.qml
+1
-1
DeviceLockUI.qml
src/qml/DeviceLockUI.qml
+1
-1
FeedsPage.qml
src/qml/FeedsPage.qml
+1
-1
GlacierRotation.qml
src/qml/GlacierRotation.qml
+1
-1
LockscreenClock.qml
src/qml/LockscreenClock.qml
+1
-1
MainScreen.qml
src/qml/MainScreen.qml
+3
-2
Pager.qml
src/qml/Pager.qml
+1
-1
ShutdownScreen.qml
src/qml/ShutdownScreen.qml
+1
-1
Statusbar.qml
src/qml/Statusbar.qml
+1
-1
SwitcherItem.qml
src/qml/SwitcherItem.qml
+1
-1
ToolBarLayoutExample.qml
src/qml/ToolBarLayoutExample.qml
+1
-1
VolumeControl.qml
src/qml/VolumeControl.qml
+1
-1
Deleter.qml
src/qml/applauncher/Deleter.qml
+187
-0
SearchListView.qml
src/qml/applauncher/SearchListView.qml
+120
-25
compositor.qml
src/qml/compositor.qml
+1
-2
ScreenGestureArea.qml
src/qml/compositor/ScreenGestureArea.qml
+1
-1
WindowWrapperAlpha.qml
src/qml/compositor/WindowWrapperAlpha.qml
+1
-1
WindowWrapperBase.qml
src/qml/compositor/WindowWrapperBase.qml
+1
-1
WindowWrapperMystic.qml
src/qml/compositor/WindowWrapperMystic.qml
+1
-1
src.pro
src/src.pro
+15
-37
No files found.
src/qml/AppLauncher.qml
View file @
e932f7bc
// This file is part of colorful-home, a nice user experience for touchscreens.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
...
...
@@ -22,308 +21,184 @@
// Copyright (c) 2011, Tom Swindell <t.swindell@rubyx.co.uk>
// Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org>
// Copyright (c) 2017, Eetu Kahelin
// Copyright (c) 2018, Chupligin Sergey <neochapay@gmail.com>
import
QtQuick
2.6
import
org
.
nemomobile
.
lipstick
0.1
import
org
.
nemomobile
.
configuration
1.0
import
QtQuick
.
Controls
.
Nemo
1.0
import
QtQuick
.
Controls
.
Styles
.
Nemo
1.0
import
"
applauncher
"
// App Launcher page
// the place for browsing installed applications and launching them
GridView
{
id
:
gridview
width
:
cellWidth
*
columns
cacheBuffer
:
gridview
.
contentHeight
property
Item
reorderItem
property
bool
onUninstall
property
alias
deleter
:
deleter
Flickable
{
id
:
appLauncher
width
:
parent
.
width
height
:
desktop
.
height
property
var
switcher
:
null
property
string
searchString
property
int
minCellSize
:
Theme
.
iconSizeLauncher
+
Theme
.
iconSizeLauncher
/
2
property
int
rows
:
Math
.
floor
(
parent
.
height
/
minCellSize
)
property
int
columns
:
Math
.
floor
(
parent
.
width
/
minCellSize
)
cellWidth
:
parent
.
width
/
columns
cellHeight
:
Math
.
round
(
parent
.
height
/
rows
)
property
int
folderIndex
:
-
1
property
bool
isRootFolder
:
true
property
bool
newFolderActive
property
bool
newFolder
:
newFolderActive
&&
isRootFolder
&&
folderIndex
>=
0
clip
:
true
onContentYChanged
:
{
if
(
contentY
<
-
Theme
.
itemHeightHuge
*
2
)
{
headerItem
.
visible
=
true
;
timer
.
running
=
true
;
}
ConfigurationValue
{
id
:
alwaysShowSearch
key
:
"
/home/glacier/appLauncher/alwaysShowSearch
"
defaultValue
:
true
}
onSearchStringChanged
:
timer
.
restart
()
Timer
{
id
:
timer
;
running
:
false
;
interval
:
7000
;
repeat
:
true
onTriggered
:
{
if
(
searchString
.
length
<
1
)
headerItem
.
visible
=
false
/*top search line*/
SearchListView
{
id
:
searchListView
width
:
appLauncher
.
width
visible
:
alwaysShowSearch
.
value
==
true
Timer
{
id
:
searchListViewTimer
;
running
:
false
;
interval
:
7000
;
repeat
:
true
onTriggered
:
{
if
(
searchString
.
length
<
1
&&
!
alwaysShowSearch
.
value
==
true
)
{
searchListView
.
visible
=
false
}
}
}
}
Connections
{
target
:
headerItem
on
HeightChanged
:
{
if
(
headerItem
.
oldHeight
<
headerItem
.
height
)
if
(
!
flicking
)
gridview
.
contentY
=
headerItem
.
y
headerItem
.
oldHeight
=
headerItem
.
height
target
:
lockScreen
on
VisibleChanged
:
{
if
(
lockscreenVisible
())
{
searchListView
.
cleanup
()
}
}
onVisibleChanged
:
timer
.
restart
()
}
Connections
{
target
:
Lipstick
.
compositor
onDisplayOff
:
{
headerItem
.
searchField
.
text
=
""
headerItem
.
visible
=
false
searchListView
.
cleanup
()
}
onWindowAdded
:
{
if
(
window
.
category
==
""
&&
window
.
title
!==
"
Home
"
){
headerItem
.
searchField
.
text
=
""
headerItem
.
visible
=
false
if
(
window
.
category
===
""
&&
window
.
title
!==
"
Home
"
){
searchListView
.
cleanup
()
}
}
onWindowRaised
:
{
if
(
window
.
category
==
""
&&
window
.
title
!==
"
Home
"
){
headerItem
.
searchField
.
text
=
""
headerItem
.
visible
=
false
if
(
window
.
category
===
""
&&
window
.
title
!==
"
Home
"
){
searchListView
.
cleanup
()
}
}
}
Connections
{
target
:
pager
onFlickEnded
:
{
headerItem
.
searchField
.
text
=
""
headerItem
.
visible
=
false
onSearchStringChanged
:
searchListViewTimer
.
restart
()
/*app grid*/
GridView
{
id
:
gridview
width
:
parent
.
width
height
:
parent
.
height
-
searchListView
.
height
-
Theme
.
itemSpacingHuge
visible
:
searchString
.
length
===
0
cacheBuffer
:
gridview
.
contentHeight
property
Item
reorderItem
property
bool
onUninstall
property
int
minCellSize
:
Theme
.
iconSizeLauncher
+
Theme
.
iconSizeLauncher
/
2
property
int
rows
:
Math
.
floor
(
parent
.
height
/
minCellSize
)
property
int
columns
:
Math
.
floor
(
parent
.
width
/
minCellSize
)
cellWidth
:
parent
.
width
/
columns
cellHeight
:
Math
.
round
(
parent
.
height
/
rows
)
anchors
{
top
:
searchListView
.
bottom
topMargin
:
Theme
.
itemSpacingHuge
}
}
Connections
{
target
:
lockScreen
onVisibleChanged
:
{
if
(
lockscreenVisible
())
{
headerItem
.
searchField
.
text
=
""
headerItem
.
visible
=
false
onContentYChanged
:
{
if
(
contentY
<
-
Theme
.
itemHeightHuge
*
2
&&
alwaysShowSearch
.
value
==
false
)
{
searchListView
.
visible
=
true
searchListViewTimer
.
running
=
true
}
}
}
header
:
SearchListView
{
width
:
gridview
.
width
}
footer
:
Item
{
height
:
Theme
.
itemHeightLarge
*
1.5
}
property
int
folderIndex
:
-
1
property
bool
isRootFolder
:
true
property
bool
newFolderActive
property
bool
newFolder
:
newFolderActive
&&
isRootFolder
&&
folderIndex
>=
0
clip
:
true
Item
{
//Doesn't yet uninstall applications
id
:
deleter
anchors.top
:
parent
.
top
property
alias
remove
:
remove
property
alias
uninstall
:
uninstall
function
uninstalling
(
action
,
caption
)
{
state
=
action
if
(
action
===
"
remove
"
)
{
remove
.
text
=
qsTr
(
"
Removing
"
)
+
"
"
+
caption
}
else
if
(
action
==
"
uninstall
"
)
{
uninstall
.
text
=
qsTr
(
"
Uninstalling
"
)
+
"
"
+
caption
/*onContentYChanged: {
if( contentY < -Theme.itemHeightHuge ) {
headerItem.visible = true;
timer.running = true;
}
}*/
footer
:
Item
{
height
:
Theme
.
itemHeightLarge
*
1.5
}
states
:
[
State
{
name
:
"
remove
"
PropertyChanges
{
target
:
remove
color1
:
"
#D9ff0000
"
color2
:
"
#D9ff0000
"
color3
:
"
#D9ff0000
"
}
PropertyChanges
{
target
:
uninstall
color1
:
"
#D9ff0000
"
color2
:
"
#80ff0000
"
color3
:
"
#4Dff0000
"
}
PropertyChanges
{
target
:
uninstall
text
:
qsTr
(
"
Uninstall
"
)
}
},
State
{
name
:
"
uninstall
"
PropertyChanges
{
target
:
uninstall
color1
:
"
#D9ff0000
"
color2
:
"
#D9ff0000
"
color3
:
"
#D9ff0000
"
}
PropertyChanges
{
target
:
remove
color1
:
"
#D9ff0000
"
color2
:
"
#80ff0000
"
color3
:
"
#4Dff0000
"
}
PropertyChanges
{
target
:
remove
text
:
qsTr
(
"
Remove
"
)
}
},
State
{
name
:
"
basic
"
PropertyChanges
{
target
:
remove
color1
:
"
#D9ff0000
"
color2
:
"
#80ff0000
"
color3
:
"
#4Dff0000
"
}
PropertyChanges
{
target
:
remove
text
:
qsTr
(
"
Remove
"
)
}
PropertyChanges
{
target
:
uninstall
color1
:
"
#D9ff0000
"
color2
:
"
#80ff0000
"
color3
:
"
#4Dff0000
"
}
PropertyChanges
{
target
:
uninstall
text
:
qsTr
(
"
Uninstall
"
)
}
}
]
onFolderIndexChanged
:
if
(
folderIndex
==
-
1
)
newFolderActive
=
false
Rectangle
{
//WHY?
id
:
remove
property
color
color1
:
"
#D9ff0000
"
property
color
color2
:
"
#80ff0000
"
property
color
color3
:
"
#4Dff0000
"
property
alias
text
:
removeLabel
.
text
anchors.left
:
parent
.
left
visible
:
gridview
.
onUninstall
height
:
Theme
.
itemHeightExtraLarge
width
:
gridview
.
width
/
2
gradient
:
Gradient
{
GradientStop
{
position
:
0.0
;
color
:
remove
.
color1
}
GradientStop
{
position
:
0.5
;
color
:
remove
.
color2
}
GradientStop
{
position
:
1.0
;
color
:
remove
.
color3
}
}
Row
{
width
:
parent
.
width
height
:
parent
.
height
Image
{
id
:
removeIcon
fillMode
:
Image
.
PreserveAspectFit
height
:
parent
.
height
-
Theme
.
itemSpacingExtraSmall
width
:
height
anchors.verticalCenter
:
parent
.
verticalCenter
source
:
"
image://theme/remove
"
visible
:
deleter
.
state
!=
"
remove
"
}
model
:
LauncherFolderModel
{
id
:
launcherModel
}
Label
{
id
:
removeLabel
text
:
qsTr
(
"
Remove
"
)
height
:
parent
.
height
width
:
parent
.
width
-
(
removeIcon
.
visible
?
removeIcon
.
width
:
0
)
anchors.verticalCenter
:
parent
.
verticalCenter
font.pixelSize
:
Theme
.
fontSizeSmall
elide
:
Text
.
ElideRight
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
}
}
//Using loader that in the future we can also have widgets as delegate
delegate
:
Loader
{
id
:
loader
width
:
gridview
.
cellWidth
height
:
gridview
.
cellHeight
onXChanged
:
item
.
x
=
x
onYChanged
:
item
.
y
=
y
property
QtObject
modelData
:
model
property
int
cellIndex
:
index
sourceComponent
:
object
.
type
==
LauncherModel
.
Folder
?
folder
:
app
}
Rectangle
{
id
:
uninstall
property
color
color1
:
"
#D9ff0000
"
property
color
color2
:
"
#80ff0000
"
property
color
color3
:
"
#4Dff0000
"
property
alias
text
:
uninstallLabel
.
text
anchors.left
:
remove
.
right
visible
:
gridview
.
onUninstall
width
:
gridview
.
width
/
2
height
:
Theme
.
itemHeightExtraLarge
gradient
:
Gradient
{
GradientStop
{
position
:
0.0
;
color
:
uninstall
.
color1
}
GradientStop
{
position
:
0.5
;
color
:
uninstall
.
color2
}
GradientStop
{
position
:
1.0
;
color
:
uninstall
.
color3
}
Component
{
id
:
app
LauncherItemDelegate
{
id
:
launcherItem
parent
:
gridview
parentItem
:
gridview
iconCaption.color
:
Theme
.
textColor
iconCaption.text
:
modelData
.
object
.
title
isFolder
:
modelData
.
object
.
type
==
LauncherModel
.
Folder
source
:
modelData
.
object
.
iconId
==
""
?
"
/usr/share/lipstick-glacier-home-qt5/qml/theme/default-icon.png
"
:
(
modelData
.
object
.
iconId
.
indexOf
(
"
/
"
)
==
0
?
"
file://
"
:
"
image://theme/
"
)
+
modelData
.
object
.
iconId
notNemoIcon
:
isFolder
||
modelData
.
object
.
iconId
==
""
?
false
:
modelData
.
object
.
iconId
.
indexOf
(
"
harbour
"
)
>
-
1
||
modelData
.
object
.
iconId
.
indexOf
(
"
apkd_launcher
"
)
>
-
1
?
true
:
false
folderModel
:
launcherModel
}
Row
{
width
:
parent
.
width
height
:
parent
.
height
Image
{
id
:
trashIcon
fillMode
:
Image
.
PreserveAspectFit
height
:
parent
.
height
-
Theme
.
itemSpacingExtraSmall
width
:
height
anchors.verticalCenter
:
parent
.
verticalCenter
source
:
"
image://theme/trash
"
visible
:
deleter
.
state
!=
"
uninstall
"
}
Label
{
id
:
uninstallLabel
height
:
parent
.
height
width
:
parent
.
width
-
(
trashIcon
.
visible
?
trashIcon
.
width
:
0
)
anchors.verticalCenter
:
parent
.
verticalCenter
text
:
qsTr
(
"
Uninstall
"
)
font.pixelSize
:
Theme
.
fontSizeSmall
elide
:
Text
.
ElideRight
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
}
}
Component
{
id
:
folder
LauncherItemFolder
{
id
:
launcherfolder
parent
:
gridview
iconCaption.color
:
Theme
.
textColor
iconCaption.text
:
modelData
.
object
.
title
isFolder
:
modelData
.
object
.
type
==
LauncherModel
.
Folder
folderAppsCount
:
isFolder
&&
modelData
.
object
?
modelData
.
object
.
itemCount
:
0
notNemoIcon
:
isFolder
||
modelData
.
object
.
iconId
==
""
?
false
:
modelData
.
object
.
iconId
.
indexOf
(
"
harbour
"
)
>
-
1
||
modelData
.
object
.
iconId
.
indexOf
(
"
apkd_launcher
"
)
>
-
1
?
true
:
false
folderModel
:
launcherModel
}
}
}
onFolderIndexChanged
:
if
(
folderIndex
==
-
1
)
newFolderActive
=
false
model
:
LauncherFolderModel
{
id
:
launcherModel
}
//Using loader that in the future we can also have widgets as delegate
delegate
:
Loader
{
id
:
loader
width
:
cellWidth
height
:
cellHeight
onXChanged
:
item
.
x
=
x
onYChanged
:
item
.
y
=
y
property
QtObject
modelData
:
model
property
int
cellIndex
:
index
sourceComponent
:
object
.
type
==
LauncherModel
.
Folder
?
folder
:
app
}
Component
{
id
:
app
LauncherItemDelegate
{
id
:
launcherItem
parent
:
gridview
parentItem
:
gridview
iconCaption.color
:
Theme
.
textColor
iconCaption.text
:
modelData
.
object
.
title
isFolder
:
modelData
.
object
.
type
==
LauncherModel
.
Folder
source
:
modelData
.
object
.
iconId
==
""
?
"
/usr/share/lipstick-glacier-home-qt5/qml/theme/default-icon.png
"
:
(
modelData
.
object
.
iconId
.
indexOf
(
"
/
"
)
==
0
?
"
file://
"
:
"
image://theme/
"
)
+
modelData
.
object
.
iconId
notNemoIcon
:
isFolder
||
modelData
.
object
.
iconId
==
""
?
false
:
modelData
.
object
.
iconId
.
indexOf
(
"
harbour
"
)
>
-
1
||
modelData
.
object
.
iconId
.
indexOf
(
"
apkd_launcher
"
)
>
-
1
?
true
:
false
folderModel
:
launcherModel
}
}
Component
{
id
:
folder
LauncherItemFolder
{
id
:
launcherfolder
parent
:
gridview
iconCaption.color
:
Theme
.
textColor
iconCaption.text
:
modelData
.
object
.
title
isFolder
:
modelData
.
object
.
type
==
LauncherModel
.
Folder
folderAppsCount
:
isFolder
&&
modelData
.
object
?
modelData
.
object
.
itemCount
:
0
notNemoIcon
:
isFolder
||
modelData
.
object
.
iconId
==
""
?
false
:
modelData
.
object
.
iconId
.
indexOf
(
"
harbour
"
)
>
-
1
||
modelData
.
object
.
iconId
.
indexOf
(
"
apkd_launcher
"
)
>
-
1
?
true
:
false
folderModel
:
launcherModel
Deleter
{
id
:
deleter
anchors
{
bottom
:
parent
.
bottom
}
state
:
"
uninstall
"
}
}
src/qml/CloseButton.qml
View file @
e932f7bc
...
...
@@ -21,7 +21,7 @@
//
// Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org>
import
QtQuick
2.
0
import
QtQuick
2.
6
Image
{
id
:
closeButton
...
...
src/qml/DeviceLockUI.qml
View file @
e932f7bc
import
QtQuick
2.
1
import
QtQuick
2.
6
import
QtQuick
.
Controls
1.0
import
QtQuick
.
Controls
.
Nemo
1.0
import
QtQuick
.
Controls
.
Styles
.
Nemo
1.0
...
...
src/qml/FeedsPage.qml
View file @
e932f7bc
...
...
@@ -22,7 +22,7 @@
// Copyright (c) 2011, Tom Swindell <t.swindell@rubyx.co.uk>
// Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org>
import
QtQuick
2.
1
import
QtQuick
2.
6
import
org
.
nemomobile
.
lipstick
0.1
import
QtQuick
.
Controls
.
Nemo
1.0
import
QtQuick
.
Controls
.
Styles
.
Nemo
1.0
...
...
src/qml/GlacierRotation.qml
View file @
e932f7bc
...
...
@@ -29,7 +29,7 @@
**
****************************************************************************************/
import
QtQuick
2.
1
import
QtQuick
2.
6
import
QtQuick
.
Window
2.1
import
org
.
nemomobile
.
lipstick
0.1
...
...
src/qml/LockscreenClock.qml
View file @
e932f7bc
import
QtQuick
2.
1
import
QtQuick
2.
6
import
org
.
nemomobile
.
devicelock
1.0
import
QtQuick
.
Controls
.
Nemo
1.0
import
QtQuick
.
Controls
.
Styles
.
Nemo
1.0
...
...
src/qml/MainScreen.qml
View file @
e932f7bc
...
...
@@ -29,7 +29,7 @@
**
****************************************************************************************/
import
QtQuick
2.
1
import
QtQuick
2.
6
import
QtQuick
.
Controls
1.0
import
QtQuick
.
Controls
.
Nemo
1.0
import
QtQuick
.
Controls
.
Styles
.
Nemo
1.0
...
...
@@ -43,6 +43,7 @@ import org.nemomobile.devicelock 1.0
import
"
scripts/desktop.js
"
as
Desktop
Page
{
id
:
desktop
// This is used in the favorites page and in the lock screen
WallClock
{
id
:
wallClock
...
...
@@ -63,7 +64,7 @@ Page {
key
:
"
/home/glacier/homeScreen/wallpaperImage
"
defaultValue
:
"
/usr/share/lipstick-glacier-home-qt5/qml/images/wallpaper-portrait-bubbles.png
"
}
id
:
desktop
property
alias
lockscreen
:
lockScreen
property
alias
switcher
:
switcher
property
int
statusBarHeight
:
statusbar
.
height
...
...
src/qml/Pager.qml
View file @
e932f7bc
...
...
@@ -21,7 +21,7 @@
//
// Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org>
import
QtQuick
2.
0
import
QtQuick
2.
6
PathView
{
id
:
pager
...
...
src/qml/ShutdownScreen.qml
View file @
e932f7bc
import
QtQuick
2.
0
import
QtQuick
2.
6
import
QtQuick
.
Window
2.0
import
org
.
nemomobile
.
lipstick
0.1
import
"
..
"
...
...
src/qml/Statusbar.qml
View file @
e932f7bc
...
...
@@ -29,7 +29,7 @@
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
****************************************************************************************/
import
QtQuick
2.
1
import
QtQuick
2.
6
import
QtQuick
.
Layouts
1.0
import
QtQuick
.
Controls
.
Nemo
1.0
import
QtQuick
.
Controls
.
Styles
.
Nemo
1.0
...
...
src/qml/SwitcherItem.qml
View file @
e932f7bc
...
...
@@ -22,7 +22,7 @@
// Copyright (c) 2011, Tom Swindell <t.swindell@rubyx.co.uk>
// Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org>
import
QtQuick
2.
0
import
QtQuick
2.
6
import
org
.
nemomobile
.
lipstick
0.1
import
QtQuick
.
Controls
.
Nemo
1.0
import
QtQuick
.
Controls
.
Styles
.
Nemo
1.0
...
...
src/qml/ToolBarLayoutExample.qml
View file @
e932f7bc
import
QtQuick
2.
0
import
QtQuick
2.
6
import
QtQuick
.
Controls
.
Nemo
1.0
Item
{
...
...
src/qml/VolumeControl.qml
View file @
e932f7bc
...
...
@@ -29,7 +29,7 @@
**
****************************************************************************************/
import
QtQuick
2.
1
import
QtQuick
2.
6
import
QtQuick
.
Controls
1.0
import
QtQuick
.
Controls
.
Nemo
1.0
import
QtQuick
.
Controls
.
Styles
.
Nemo
1.0
...
...
src/qml/applauncher/Deleter.qml
0 → 100644
View file @
e932f7bc
// This file is part of glacier-home, a nice user experience for touchscreens.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
// Copyright (c) 2018, Chupligin Sergey <neochapay@gmail.com>
import
QtQuick
2.6
import
QtQuick
.
Controls
.
Nemo
1.0
import
QtQuick
.
Controls
.
Styles
.
Nemo
1.0
Item
{
//Doesn't yet uninstall applications
id
:
deleter
property
alias
remove
:
remove
property
alias
uninstall
:
uninstall
function
uninstalling
(
action
,
caption
)
{
state
=
action
if
(
action
===
"
remove
"
)
{
remove
.
text
=
qsTr
(
"
Removing
"
)
+
"
"
+
caption
}
else
if
(
action
==
"
uninstall
"
)
{
uninstall
.
text
=
qsTr
(
"
Uninstalling
"
)
+
"
"
+
caption
}
}
states
:
[
State
{
name
:
"
remove
"
PropertyChanges
{
target
:
remove
color1
:
"
#D9ff0000
"
color2
:
"
#D9ff0000
"
color3
:
"
#D9ff0000
"
}
PropertyChanges
{
target
:
uninstall
color1
:
"
#D9ff0000
"
color2
:
"
#80ff0000
"
color3
:
"
#4Dff0000
"
}
PropertyChanges
{
target
:
uninstall
text
:
qsTr
(
"
Uninstall
"
)
}
},
State
{
name
:
"
uninstall
"
PropertyChanges
{
target
:
uninstall
color1
:
"
#D9ff0000
"
color2
:
"
#D9ff0000
"
color3
:
"
#D9ff0000
"
}
PropertyChanges
{
target
:
remove
color1
:
"
#D9ff0000
"
color2
:
"
#80ff0000
"
color3
:
"
#4Dff0000
"
}
PropertyChanges
{
target
:
remove
text
:
qsTr
(
"
Remove
"
)
}
},
State
{
name
:
"
basic
"
PropertyChanges
{
target
:
remove
color1
:
"
#D9ff0000
"
color2
:
"
#80ff0000
"
color3
:
"
#4Dff0000
"
}
PropertyChanges
{
target
:
remove
text
:
qsTr
(
"
Remove
"
)
}
PropertyChanges
{
target
:
uninstall
color1
:
"
#D9ff0000
"
color2
:
"
#80ff0000
"
color3
:
"
#4Dff0000
"
}
PropertyChanges
{
target
:
uninstall
text
:
qsTr
(
"
Uninstall
"
)
}
}
]
Rectangle
{
//WHY?
id
:
remove
property
color
color1
:
"
#D9ff0000
"
property
color
color2
:
"
#80ff0000
"
property
color
color3
:
"
#4Dff0000
"
property
alias
text
:
removeLabel
.
text
anchors.left
:
parent
.
left
visible
:
gridview
.
onUninstall
height
:
Theme
.
itemHeightExtraLarge
width
:
gridview
.
width
/
2
gradient
:
Gradient
{
GradientStop
{
position
:
0.0
;
color
:
remove
.
color1
}
GradientStop
{
position
:
0.5
;
color
:
remove
.
color2
}
GradientStop
{
position
:
1.0
;
color
:
remove
.
color3
}
}
Row
{
width
:
parent
.
width
height
:
parent
.
height
Image
{
id
:
removeIcon
fillMode
:
Image
.
PreserveAspectFit
height
:
parent
.
height
-
Theme
.
itemSpacingExtraSmall
width
:
height
anchors.verticalCenter
:
parent
.
verticalCenter
source
:
"
image://theme/remove
"
visible
:
deleter
.
state
!=
"
remove
"
}
Label
{
id
:
removeLabel
text
:
qsTr
(
"
Remove
"
)
height
:
parent
.
height
width
:
parent
.
width
-
(
removeIcon
.
visible
?
removeIcon
.
width
:
0
)
anchors.verticalCenter
:
parent
.
verticalCenter
font.pixelSize
:
Theme
.
fontSizeSmall
elide
:
Text
.
ElideRight
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
}
}
}
Rectangle
{
id
:
uninstall
property
color
color1
:
"
#D9ff0000
"
property
color
color2
:
"
#80ff0000
"
property
color
color3
:
"
#4Dff0000
"
property
alias
text
:
uninstallLabel
.
text
anchors.left
:
remove
.
right
visible
:
gridview
.
onUninstall
width
:
gridview
.
width
/
2
height
:
Theme
.
itemHeightExtraLarge
gradient
:
Gradient
{
GradientStop
{
position
:
0.0
;
color
:
uninstall
.
color1
}
GradientStop
{
position
:
0.5
;
color
:
uninstall
.
color2
}
GradientStop
{
position
:
1.0
;
color
:
uninstall
.
color3
}
}
Row
{
width
:
parent
.
width
height
:
parent
.
height
Image
{
id
:
trashIcon
fillMode
:
Image
.
PreserveAspectFit
height
:
parent
.
height
-
Theme
.
itemSpacingExtraSmall
width
:
height
anchors.verticalCenter
:
parent
.
verticalCenter
source
:
"
image://theme/trash
"
visible
:
deleter
.
state
!=
"
uninstall
"
}
Label
{
id
:
uninstallLabel
height
:
parent
.
height
width
:
parent
.
width
-
(
trashIcon
.
visible
?
trashIcon
.
width
:
0
)
anchors.verticalCenter
:
parent
.
verticalCenter
text
:
qsTr
(
"
Uninstall
"
)
font.pixelSize
:
Theme
.
fontSizeSmall
elide
:
Text
.
ElideRight
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
}
}
}
}
src/qml/SearchListView.qml
→
src/qml/
applauncher/
SearchListView.qml
View file @
e932f7bc
/****************************************************************************************
**
** Copyright (c) 2017, Eetu Kahelin
** Copyright (c) 2018, Chupligin Sergey
** All rights reserved.
**
** You may use this file under the terms of BSD license as follows:
...
...
@@ -29,41 +30,68 @@
**
****************************************************************************************/
import
QtQuick
2.6
import
org
.
nemomobile
.
lipstick
0.1
import
QtQuick
.
Controls
.
Nemo
1.0
import
QtQuick
.
Controls
.
Styles
.
Nemo
1.0
import
org
.
nemomobile
.
lipstick
0.1
import
org
.
nemomobile
.
contacts
1.0
Item
{
id
:
rootItem
height
:
(
searchField
.
text
.
length
>
0
?
listView
.
height
+
searchField
.
height
:
searchField
.
height
)
+
(
visible
?
Theme
.
itemSpacingHuge
+
margin
.
height
:
0
)
visible
:
false
height
:
calculateHeight
()
anchors.bottomMargin
:
Theme
.
itemSpacingHuge
property
alias
searchField
:
searchField
property
int
oldHeight
Behavior
on
height
{
enabled
:
!
visible
NumberAnimation
{
duration
:
300
}
InverseMouseArea
{
anchors.fill
:
parent
onPressed
:
cleanup
()
}
onVisibleChanged
:
{
if
(
visible
){
searchField
.
focus
=
true
searchField
.
forceActiveFocus
()
}
else
searchField
.
focus
=
false
oldHeight
=
height
function
cleanup
(){
searchField
.
focus
=
false
appLauncher
.
searchString
=
""
searchField
.
text
=
""
if
(
!
alwaysShowSearch
.
value
==
true
)
{
searchListView
.
visible
=
false
;
}
}
Item
{
id
:
margin
height
:
Theme
.
itemSpacingSmall
function
calculateHeight
()
{
if
(
rootItem
.
visible
){
if
(
searchField
.
text
.
length
>
0
){
return
parent
.
height
}
return
searchRow
.
height
+
Theme
.
itemSpacingHuge
}
else
{
return
0
;
}
}
onVisibleChanged
:
{
if
(
alwaysShowSearch
.
value
==
false
)
{
if
(
visible
){
rootItem
.
height
=
calculateHeight
()
searchField
.
focus
=
true
searchField
.
forceActiveFocus
()
}
else
{
searchField
.
focus
=
false
}
oldHeight
=
height
}
}
Row
{
id
:
searchRow
anchors
{
top
:
margin
.
bottom
top
:
parent
.
top
left
:
parent
.
left
right
:
parent
.
right
topMargin
:
Theme
.
itemSpacingHuge
...
...
@@ -78,6 +106,15 @@ Item {
height
:
searchField
.
height
fillMode
:
Image
.
PreserveAspectFit
source
:
"
image://theme/search
"
MouseArea
{
id
:
hideShowMouseArea
anchors.fill
:
parent
onPressAndHold
:
{
hideShowRow
.
visible
=
true
rootItem
.
height
=
rootItem
.
height
+
hideShowRow
.
height
}
}
}
TextField
{
...
...
@@ -85,25 +122,64 @@ Item {
width
:
parent
.
width
-
searchIcon
.
width
-
Theme
.
itemSpacingMedium
placeholderText
:
qsTr
(
"
Search
"
)
Binding
{
target
:
gridview
target
:
appLauncher
property
:
"
searchString
"
value
:
searchField
.
text
.
toLowerCase
().
trim
()
}
onTextChanged
:
{
if
(
tex
.
lenght
>
0
)
{
if
(
searchField
.
lenght
>
0
)
{
searchField
.
forceActiveFocus
()
}
}
}
}
Row
{
id
:
hideShowRow
visible
:
false
width
:
parent
.
width
-
Theme
.
itemSpacingMedium
*
2
height
:
visible
?
hideShowButton
.
height
+
Theme
.
itemSpacingMedium
:
0
anchors
{
top
:
searchRow
.
bottom
topMargin
:
visible
?
Theme
.
itemSpacingMedium
:
0
}
Button
{
id
:
hideShowButton
text
:
alwaysShowSearch
.
value
==
true
?
qsTr
(
"
Hide search panel
"
)
:
qsTr
(
"
Pinup search panel
"
)
width
:
parent
.
width
onClicked
:
{
rootItem
.
height
=
rootItem
.
height
-
hideShowRow
.
height
hideShowRow
.
visible
=
false
if
(
alwaysShowSearch
.
value
==
true
)
{
alwaysShowSearch
.
value
=
false
}
else
{
alwaysShowSearch
.
value
=
true
}
}
}
InverseMouseArea
{
anchors.fill
:
parent
onPressed
:
{
rootItem
.
height
=
rootItem
.
height
-
hideShowRow
.
height
hideShowRow
.
visible
=
false
}
}
}
ListView
{
id
:
listView
clip
:
true
width
:
parent
.
width
height
:
contentHeight
anchors.top
:
searchRow
.
bottom
anchors.topMargin
:
Theme
.
itemSpacingSmall
anchors
{
top
:
searchRow
.
bottom
topMargin
:
listModel
.
count
>
0
?
Theme
.
itemSpacingSmall
:
0
}
visible
:
searchString
.
length
>
0
section.property
:
'
category
'
section.delegate
:
Component
{
...
...
@@ -155,7 +231,7 @@ Item {
}
Connections
{
target
:
gridview
target
:
appLauncher
onSearchStringChanged
:
listView
.
update
()
}
...
...
@@ -190,15 +266,34 @@ Item {
for
(
i
=
0
;
i
<
searchLauncherModel
.
itemCount
;
++
i
)
{
if
(
searchLauncherModel
.
get
(
i
).
type
===
LauncherModel
.
Folder
)
{
for
(
var
j
=
0
;
j
<
searchLauncherModel
.
get
(
i
).
itemCount
;
++
j
)
{
titles
.
push
({
'
iconTitle
'
:
searchLauncherModel
.
get
(
i
).
get
(
j
).
title
,
'
iconSource
'
:
searchLauncherModel
.
get
(
i
).
get
(
j
).
iconId
,
'
id
'
:
i
,
'
folderId
'
:
j
,
'
category
'
:
qsTr
(
"
Application
"
)})
titles
.
push
({
'
iconTitle
'
:
searchLauncherModel
.
get
(
i
).
get
(
j
).
title
,
'
iconSource
'
:
searchLauncherModel
.
get
(
i
).
get
(
j
).
iconId
,
'
id
'
:
i
,
'
folderId
'
:
j
,
'
category
'
:
qsTr
(
"
Application
"
),
'
extraCaption
'
:
qsTr
(
"
installed on you device
"
)
})
}
}
else
{
titles
.
push
({
'
iconTitle
'
:
searchLauncherModel
.
get
(
i
).
title
,
'
iconSource
'
:
searchLauncherModel
.
get
(
i
).
iconId
,
'
id
'
:
i
,
'
folderId
'
:
-
1
,
'
category
'
:
qsTr
(
"
Application
"
)})
titles
.
push
({
'
iconTitle
'
:
searchLauncherModel
.
get
(
i
).
title
,
'
iconSource
'
:
searchLauncherModel
.
get
(
i
).
iconId
,
'
id
'
:
i
,
'
folderId
'
:
-
1
,
'
category
'
:
qsTr
(
"
Application
"
),
'
extraCaption
'
:
qsTr
(
"
installed on you device
"
)
})
}
}
for
(
i
=
0
;
i
<
peopleModel
.
count
;
++
i
)
{
if
(
peopleModel
.
get
(
i
).
firstName
&&
peopleModel
.
get
(
i
).
lastName
)
{
contacts
.
push
({
'
title
'
:(
peopleModel
.
get
(
i
).
firstName
+
"
"
+
peopleModel
.
get
(
i
).
lastName
),
'
iconSource
'
:
peopleModel
.
get
(
i
).
avatarUrl
.
toString
(),
'
extraCaption
'
:
peopleModel
.
get
(
i
).
phoneNumbers
,
'
category
'
:
qsTr
(
"
Contact
"
)})
contacts
.
push
({
'
title
'
:(
peopleModel
.
get
(
i
).
firstName
+
"
"
+
peopleModel
.
get
(
i
).
lastName
),
'
iconSource
'
:
peopleModel
.
get
(
i
).
avatarUrl
.
toString
(),
'
extraCaption
'
:
peopleModel
.
get
(
i
).
phoneNumbers
,
'
category
'
:
qsTr
(
"
Contact
"
)
})
}
}
var
filteredTitles
=
titles
.
filter
(
function
(
icon
)
{
...
...
@@ -236,7 +331,7 @@ Item {
found
=
existingTitleObject
.
hasOwnProperty
(
iconTitle
)
if
(
!
found
)
{
// for simplicity, just adding to end instead of corresponding position in original list
listModel
.
append
({
'
title
'
:
iconTitle
,
'
iconSource
'
:
iconId
,
'
id
'
:
id
,
'
folderId
'
:
folderId
,
'
category
'
:
category
})
listModel
.
append
({
'
title
'
:
iconTitle
,
'
iconSource
'
:
iconId
,
'
id
'
:
id
,
'
folderId
'
:
folderId
,
'
category
'
:
category
,
'
extraCaption
'
:
""
})
}
}
for
(
i
=
0
;
i
<
contacts
.
length
;
++
i
)
{
...
...
src/qml/compositor.qml
View file @
e932f7bc
...
...
@@ -21,9 +21,8 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import
QtQuick
2.
0
import
QtQuick
2.
6
import
org
.
nemomobile
.
lipstick
0.1
import
org
.
nemomobile
.
devicelock
1.0
import
"
compositor
"
...
...
src/qml/compositor/ScreenGestureArea.qml
View file @
e932f7bc
...
...
@@ -20,7 +20,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import
QtQuick
2.
0
import
QtQuick
2.
6
import
QtQuick
.
Window
2.0
import
org
.
nemomobile
.
lipstick
0.1
...
...
src/qml/compositor/WindowWrapperAlpha.qml
View file @
e932f7bc
...
...
@@ -20,7 +20,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import
QtQuick
2.
0
import
QtQuick
2.
6
WindowWrapperBase
{
id
:
wrapper
...
...
src/qml/compositor/WindowWrapperBase.qml
View file @
e932f7bc
...
...
@@ -20,7 +20,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import
QtQuick
2.
0
import
QtQuick
2.
6
Item
{
id
:
wrapper
...
...
src/qml/compositor/WindowWrapperMystic.qml
View file @
e932f7bc
...
...
@@ -21,7 +21,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import
QtQuick
2.
1
import
QtQuick
2.
6
import
QtQuick
.
Window
2.1
import
org
.
nemomobile
.
lipstick
0.1
...
...
src/src.pro
View file @
e932f7bc
...
...
@@ -46,8 +46,7 @@ qml.files = qml/MainScreen.qml \
qml/GlacierRotation.qml \
qml/DeviceLockUI.qml \
qml/LauncherItemWrapper.qml \
qml/LauncherItemFolder.qml \
qml/SearchListView.qml
qml/LauncherItemFolder.qml
qmlcompositor.path = /usr/share/lipstick-glacier-home-qt5/qml/compositor
qmlcompositor.files = qml/compositor/WindowWrapperMystic.qml \
...
...
@@ -83,6 +82,10 @@ statusbar.files = qml/statusbar/BatteryPanel.qml\
qml/statusbar/NumButton.qml \
qml/statusbar/MediaController.qml
applauncher.path = /usr/share/lipstick-glacier-home-qt5/qml/applauncher
applauncher.files = qml/applauncher/SearchListView.qml \
qml/applauncher/Deleter.qml
settingswallpaperplugin.files = settings-plugins/wallpaper/wallpaper.qml \
settings-plugins/wallpaper/selectImage.qml \
settings-plugins/wallpaper/wallpaper.svg
...
...
@@ -112,7 +115,8 @@ INSTALLS += styles \
statusbar\
settingswallpaperplugin\
settingsnotificationsplugin\
settingspluginconfig
settingspluginconfig \
applauncher
CONFIG += qt link_pkgconfig
QT += quick compositor
...
...
@@ -130,43 +134,17 @@ PKGCONFIG += lipstick-qt5 \
nemodevicelock
OTHER_FILES += qml
/*
.qml \
qml/MainScreen.qml \
qml/compositor.qml \
qml/LauncherItemDelegate.qml \
qml/Lockscreen.qml \
qml/LockscreenClock.qml \
qml/AppSwitcher.qml \
qml/AppLauncher.qml \
qml/ToolBarLayoutExample.qml \
qml/SwitcherItem.qml \
qml/CloseButton.qml \
qml/compositor/WindowWrapperMystic.qml \
qml/compositor/WindowWrapperBase.qml \
qml/compositor/WindowWrapperAlpha.qml \
qml/compositor/ScreenGestureArea.qml \
qml/NotificationPreview.qml \
qml/compositor
/*
.qml \
qml/scripts/desktop.js \
qml/FeedsPage.qml \
qml/Statusbar.qml \
qml/StatusbarItem.qml \
qml/WifiPanel.qml \
nemovars.conf \
qml/SimPanel.qml \
qml/NumButton.qml \
qml/USBModeSelector.qml \
qml/VolumeControl.qml \
qml/BatteryPanel.qml \
qml/CommonPanel.qml \
qml/ShutdownScreen.qml \
qml/GlacierRotation.qml
nemovars.conf \
qml/connectivity
/*
.qml
TRANSLATIONS += i18n/glacer-home.ts
DISTFILES += \
i18n/glacer-home.ts \
qml/connectivity/ConnectionSelector.qml \
qml/statusbar/BatteryIndicator.qml \
settings-plugins/wallpaper/selectImage.qml \
settings-plugins/notifications/notifications.json \
settings-plugins/notifications/notifications.svg \
settings-plugins/notifications/notifications.qml
qml
/*/*
.qml \
settings-plugins
/*/*
.qml \
settings-plugins
/*/*
.json \
settings-plugins
/*/*
.svg
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