Commit e932f7bc authored by Aleksi Suomalainen's avatar Aleksi Suomalainen Committed by GitHub

Merge pull request #75 from neochapay/master

Update search panel
parents 3f5bc9c9 8442ef11
// This file is part of colorful-home, a nice user experience for touchscreens. // 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 // Permission is hereby granted, free of charge, to any person obtaining a copy
...@@ -22,276 +21,142 @@ ...@@ -22,276 +21,142 @@
// Copyright (c) 2011, Tom Swindell <t.swindell@rubyx.co.uk> // Copyright (c) 2011, Tom Swindell <t.swindell@rubyx.co.uk>
// Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org> // Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org>
// Copyright (c) 2017, Eetu Kahelin // Copyright (c) 2017, Eetu Kahelin
// Copyright (c) 2018, Chupligin Sergey <neochapay@gmail.com>
import QtQuick 2.6 import QtQuick 2.6
import org.nemomobile.lipstick 0.1 import org.nemomobile.lipstick 0.1
import org.nemomobile.configuration 1.0
import QtQuick.Controls.Nemo 1.0 import QtQuick.Controls.Nemo 1.0
import QtQuick.Controls.Styles.Nemo 1.0 import QtQuick.Controls.Styles.Nemo 1.0
import "applauncher"
// App Launcher page // App Launcher page
// the place for browsing installed applications and launching them // the place for browsing installed applications and launching them
Flickable{
GridView { id: appLauncher
id: gridview width: parent.width
width: cellWidth * columns height: desktop.height
cacheBuffer: gridview.contentHeight
property Item reorderItem
property bool onUninstall
property alias deleter: deleter
property var switcher: null property var switcher: null
property string searchString 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 ConfigurationValue {
property bool isRootFolder:true id: alwaysShowSearch
property bool newFolderActive key: "/home/glacier/appLauncher/alwaysShowSearch"
property bool newFolder: newFolderActive && isRootFolder && folderIndex >= 0 defaultValue: true
clip: true
onContentYChanged: {
if( contentY < -Theme.itemHeightHuge*2 ) {
headerItem.visible = true;
timer.running = true;
}
} }
onSearchStringChanged: timer.restart() /*top search line*/
SearchListView {
id: searchListView
width: appLauncher.width
visible: alwaysShowSearch.value == true
Timer{ Timer{
id: timer; running: false; interval: 7000; repeat: true id: searchListViewTimer;
running: false;
interval: 7000;
repeat: true
onTriggered: { onTriggered: {
if(searchString.length < 1 ) headerItem.visible = false if(searchString.length < 1 && !alwaysShowSearch.value == true)
{
searchListView.visible = false
}
} }
} }
}
Connections { Connections {
target: headerItem target: lockScreen
onHeightChanged:{ onVisibleChanged: {
if(headerItem.oldHeight < headerItem.height) if(lockscreenVisible()) {
if(!flicking) gridview.contentY = headerItem.y searchListView.cleanup()
headerItem.oldHeight = headerItem.height
} }
onVisibleChanged:timer.restart()
} }
}
Connections { Connections {
target: Lipstick.compositor target: Lipstick.compositor
onDisplayOff: { onDisplayOff: {
headerItem.searchField.text = "" searchListView.cleanup()
headerItem.visible = false
} }
onWindowAdded: { onWindowAdded: {
if(window.category=="" && window.title !== "Home"){ if(window.category === "" && window.title !== "Home"){
headerItem.searchField.text = "" searchListView.cleanup()
headerItem.visible = false
} }
} }
onWindowRaised: { onWindowRaised: {
if(window.category=="" && window.title !== "Home"){ if(window.category === "" && window.title !== "Home"){
headerItem.searchField.text = "" searchListView.cleanup()
headerItem.visible = false
} }
} }
} }
Connections {
target: pager
onFlickEnded: {
headerItem.searchField.text = ""
headerItem.visible = false
} onSearchStringChanged: searchListViewTimer.restart()
}
Connections {
target: lockScreen
onVisibleChanged: {
if(lockscreenVisible()) {
headerItem.searchField.text = ""
headerItem.visible = false
}
}
}
header: SearchListView { /*app grid*/
width: gridview.width GridView {
} id: gridview
width: parent.width
height: parent.height-searchListView.height-Theme.itemSpacingHuge
footer: Item { visible: searchString.length === 0
height: Theme.itemHeightLarge*1.5
}
Item {//Doesn't yet uninstall applications cacheBuffer: gridview.contentHeight
id: deleter property Item reorderItem
anchors.top: parent.top property bool onUninstall
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: [ property int minCellSize: Theme.iconSizeLauncher + Theme.iconSizeLauncher/2
State { property int rows: Math.floor(parent.height / minCellSize)
name: "remove" property int columns: Math.floor(parent.width / minCellSize)
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? cellWidth: parent.width / columns
id: remove cellHeight: Math.round(parent.height / rows)
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 { anchors{
id: removeLabel top: searchListView.bottom
text: qsTr("Remove") topMargin: Theme.itemSpacingHuge
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 onContentYChanged: {
property color color1: "#D9ff0000" if( contentY < -Theme.itemHeightHuge*2 && alwaysShowSearch.value == false ) {
property color color2: "#80ff0000" searchListView.visible = true
property color color3: "#4Dff0000" searchListViewTimer.running = true
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
} }
} }
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 ) {
headerItem.visible = true;
timer.running = true;
} }
}*/
footer: Item {
height: Theme.itemHeightLarge*1.5
} }
onFolderIndexChanged: if (folderIndex == -1) newFolderActive = false onFolderIndexChanged: if (folderIndex == -1) newFolderActive = false
model: LauncherFolderModel { id: launcherModel } model: LauncherFolderModel{
id: launcherModel
}
//Using loader that in the future we can also have widgets as delegate //Using loader that in the future we can also have widgets as delegate
delegate: Loader { delegate: Loader {
id:loader id:loader
width: cellWidth width: gridview.cellWidth
height: cellHeight height: gridview.cellHeight
onXChanged: item.x = x onXChanged: item.x = x
onYChanged: item.y = y onYChanged: item.y = y
property QtObject modelData : model property QtObject modelData : model
...@@ -326,4 +191,14 @@ GridView { ...@@ -326,4 +191,14 @@ GridView {
folderModel:launcherModel folderModel:launcherModel
} }
} }
}
Deleter{
id: deleter
anchors{
bottom: parent.bottom
}
state: "uninstall"
}
} }
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
// //
// Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org> // Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org>
import QtQuick 2.0 import QtQuick 2.6
Image { Image {
id: closeButton id: closeButton
......
import QtQuick 2.1 import QtQuick 2.6
import QtQuick.Controls 1.0 import QtQuick.Controls 1.0
import QtQuick.Controls.Nemo 1.0 import QtQuick.Controls.Nemo 1.0
import QtQuick.Controls.Styles.Nemo 1.0 import QtQuick.Controls.Styles.Nemo 1.0
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
// Copyright (c) 2011, Tom Swindell <t.swindell@rubyx.co.uk> // Copyright (c) 2011, Tom Swindell <t.swindell@rubyx.co.uk>
// Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org> // Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org>
import QtQuick 2.1 import QtQuick 2.6
import org.nemomobile.lipstick 0.1 import org.nemomobile.lipstick 0.1
import QtQuick.Controls.Nemo 1.0 import QtQuick.Controls.Nemo 1.0
import QtQuick.Controls.Styles.Nemo 1.0 import QtQuick.Controls.Styles.Nemo 1.0
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
** **
****************************************************************************************/ ****************************************************************************************/
import QtQuick 2.1 import QtQuick 2.6
import QtQuick.Window 2.1 import QtQuick.Window 2.1
import org.nemomobile.lipstick 0.1 import org.nemomobile.lipstick 0.1
......
import QtQuick 2.1 import QtQuick 2.6
import org.nemomobile.devicelock 1.0 import org.nemomobile.devicelock 1.0
import QtQuick.Controls.Nemo 1.0 import QtQuick.Controls.Nemo 1.0
import QtQuick.Controls.Styles.Nemo 1.0 import QtQuick.Controls.Styles.Nemo 1.0
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
** **
****************************************************************************************/ ****************************************************************************************/
import QtQuick 2.1 import QtQuick 2.6
import QtQuick.Controls 1.0 import QtQuick.Controls 1.0
import QtQuick.Controls.Nemo 1.0 import QtQuick.Controls.Nemo 1.0
import QtQuick.Controls.Styles.Nemo 1.0 import QtQuick.Controls.Styles.Nemo 1.0
...@@ -43,6 +43,7 @@ import org.nemomobile.devicelock 1.0 ...@@ -43,6 +43,7 @@ import org.nemomobile.devicelock 1.0
import "scripts/desktop.js" as Desktop import "scripts/desktop.js" as Desktop
Page { Page {
id: desktop
// This is used in the favorites page and in the lock screen // This is used in the favorites page and in the lock screen
WallClock { WallClock {
id: wallClock id: wallClock
...@@ -63,7 +64,7 @@ Page { ...@@ -63,7 +64,7 @@ Page {
key: "/home/glacier/homeScreen/wallpaperImage" key: "/home/glacier/homeScreen/wallpaperImage"
defaultValue: "/usr/share/lipstick-glacier-home-qt5/qml/images/wallpaper-portrait-bubbles.png" defaultValue: "/usr/share/lipstick-glacier-home-qt5/qml/images/wallpaper-portrait-bubbles.png"
} }
id: desktop
property alias lockscreen: lockScreen property alias lockscreen: lockScreen
property alias switcher: switcher property alias switcher: switcher
property int statusBarHeight: statusbar.height property int statusBarHeight: statusbar.height
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
// //
// Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org> // Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org>
import QtQuick 2.0 import QtQuick 2.6
PathView { PathView {
id: pager id: pager
......
import QtQuick 2.0 import QtQuick 2.6
import QtQuick.Window 2.0 import QtQuick.Window 2.0
import org.nemomobile.lipstick 0.1 import org.nemomobile.lipstick 0.1
import ".." import ".."
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ** 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.Layouts 1.0
import QtQuick.Controls.Nemo 1.0 import QtQuick.Controls.Nemo 1.0
import QtQuick.Controls.Styles.Nemo 1.0 import QtQuick.Controls.Styles.Nemo 1.0
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
// Copyright (c) 2011, Tom Swindell <t.swindell@rubyx.co.uk> // Copyright (c) 2011, Tom Swindell <t.swindell@rubyx.co.uk>
// Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org> // Copyright (c) 2012, Timur Kristóf <venemo@fedoraproject.org>
import QtQuick 2.0 import QtQuick 2.6
import org.nemomobile.lipstick 0.1 import org.nemomobile.lipstick 0.1
import QtQuick.Controls.Nemo 1.0 import QtQuick.Controls.Nemo 1.0
import QtQuick.Controls.Styles.Nemo 1.0 import QtQuick.Controls.Styles.Nemo 1.0
......
import QtQuick 2.0 import QtQuick 2.6
import QtQuick.Controls.Nemo 1.0 import QtQuick.Controls.Nemo 1.0
Item { Item {
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
** **
****************************************************************************************/ ****************************************************************************************/
import QtQuick 2.1 import QtQuick 2.6
import QtQuick.Controls 1.0 import QtQuick.Controls 1.0
import QtQuick.Controls.Nemo 1.0 import QtQuick.Controls.Nemo 1.0
import QtQuick.Controls.Styles.Nemo 1.0 import QtQuick.Controls.Styles.Nemo 1.0
......
// 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
}
}
}
}
/**************************************************************************************** /****************************************************************************************
** **
** Copyright (c) 2017, Eetu Kahelin ** Copyright (c) 2017, Eetu Kahelin
** Copyright (c) 2018, Chupligin Sergey
** All rights reserved. ** All rights reserved.
** **
** You may use this file under the terms of BSD license as follows: ** You may use this file under the terms of BSD license as follows:
...@@ -29,41 +30,68 @@ ...@@ -29,41 +30,68 @@
** **
****************************************************************************************/ ****************************************************************************************/
import QtQuick 2.6 import QtQuick 2.6
import org.nemomobile.lipstick 0.1
import QtQuick.Controls.Nemo 1.0 import QtQuick.Controls.Nemo 1.0
import QtQuick.Controls.Styles.Nemo 1.0 import QtQuick.Controls.Styles.Nemo 1.0
import org.nemomobile.lipstick 0.1
import org.nemomobile.contacts 1.0 import org.nemomobile.contacts 1.0
Item { Item {
id:rootItem id:rootItem
height: (searchField.text.length > 0 ? listView.height+searchField.height : searchField.height) + (visible ? Theme.itemSpacingHuge + margin.height : 0) height: calculateHeight()
visible: false
anchors.bottomMargin:Theme.itemSpacingHuge anchors.bottomMargin:Theme.itemSpacingHuge
property alias searchField: searchField property alias searchField: searchField
property int oldHeight property int oldHeight
Behavior on height { InverseMouseArea {
enabled:!visible anchors.fill: parent
NumberAnimation{ duration: 300 } onPressed: cleanup()
}
function cleanup(){
searchField.focus = false
appLauncher.searchString = ""
searchField.text = ""
if(!alwaysShowSearch.value == true)
{
searchListView.visible = false;
}
} }
function calculateHeight()
{
if(rootItem.visible){
if(searchField.text.length > 0){
return parent.height
}
return searchRow.height+Theme.itemSpacingHuge
}
else
{
return 0;
}
}
onVisibleChanged: { onVisibleChanged: {
if( visible){ if(alwaysShowSearch.value == false)
{
if(visible){
rootItem.height = calculateHeight()
searchField.focus = true searchField.focus = true
searchField.forceActiveFocus() searchField.forceActiveFocus()
} else searchField.focus = false } else {
searchField.focus = false
}
oldHeight=height oldHeight=height
} }
Item {
id:margin
height: Theme.itemSpacingSmall
} }
Row { Row {
id:searchRow id:searchRow
anchors { anchors {
top:margin.bottom top: parent.top
left: parent.left left: parent.left
right: parent.right right: parent.right
topMargin: Theme.itemSpacingHuge topMargin: Theme.itemSpacingHuge
...@@ -78,6 +106,15 @@ Item { ...@@ -78,6 +106,15 @@ Item {
height: searchField.height height: searchField.height
fillMode: Image.PreserveAspectFit fillMode: Image.PreserveAspectFit
source: "image://theme/search" source: "image://theme/search"
MouseArea{
id: hideShowMouseArea
anchors.fill: parent
onPressAndHold: {
hideShowRow.visible = true
rootItem.height = rootItem.height+hideShowRow.height
}
}
} }
TextField { TextField {
...@@ -85,25 +122,64 @@ Item { ...@@ -85,25 +122,64 @@ Item {
width:parent.width - searchIcon.width - Theme.itemSpacingMedium width:parent.width - searchIcon.width - Theme.itemSpacingMedium
placeholderText: qsTr("Search") placeholderText: qsTr("Search")
Binding { Binding {
target: gridview target: appLauncher
property: "searchString" property: "searchString"
value: searchField.text.toLowerCase().trim() value: searchField.text.toLowerCase().trim()
} }
onTextChanged: { onTextChanged: {
if(tex.lenght>0) { if(searchField.lenght>0) {
searchField.forceActiveFocus() 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 { ListView {
id:listView id:listView
clip: true clip: true
width: parent.width width: parent.width
height:contentHeight height:contentHeight
anchors.top: searchRow.bottom anchors{
anchors.topMargin: Theme.itemSpacingSmall top: searchRow.bottom
topMargin: listModel.count > 0 ? Theme.itemSpacingSmall : 0
}
visible: searchString.length>0 visible: searchString.length>0
section.property: 'category' section.property: 'category'
section.delegate: Component{ section.delegate: Component{
...@@ -155,7 +231,7 @@ Item { ...@@ -155,7 +231,7 @@ Item {
} }
Connections { Connections {
target: gridview target: appLauncher
onSearchStringChanged: listView.update() onSearchStringChanged: listView.update()
} }
...@@ -190,15 +266,34 @@ Item { ...@@ -190,15 +266,34 @@ Item {
for (i = 0; i < searchLauncherModel.itemCount; ++i) { for (i = 0; i < searchLauncherModel.itemCount; ++i) {
if (searchLauncherModel.get(i).type === LauncherModel.Folder) { if (searchLauncherModel.get(i).type === LauncherModel.Folder) {
for(var j = 0; j< searchLauncherModel.get(i).itemCount; ++j ) { 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 { } 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) { for (i = 0; i < peopleModel.count; ++i) {
if(peopleModel.get(i).firstName && peopleModel.get(i).lastName) { 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) { var filteredTitles = titles.filter(function (icon) {
...@@ -236,7 +331,7 @@ Item { ...@@ -236,7 +331,7 @@ Item {
found = existingTitleObject.hasOwnProperty(iconTitle) found = existingTitleObject.hasOwnProperty(iconTitle)
if (!found) { if (!found) {
// for simplicity, just adding to end instead of corresponding position in original list // 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) { for (i = 0; i < contacts.length; ++i) {
......
...@@ -21,9 +21,8 @@ ...@@ -21,9 +21,8 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE. // SOFTWARE.
import QtQuick 2.0 import QtQuick 2.6
import org.nemomobile.lipstick 0.1 import org.nemomobile.lipstick 0.1
import org.nemomobile.devicelock 1.0 import org.nemomobile.devicelock 1.0
import "compositor" import "compositor"
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE. // SOFTWARE.
import QtQuick 2.0 import QtQuick 2.6
import QtQuick.Window 2.0 import QtQuick.Window 2.0
import org.nemomobile.lipstick 0.1 import org.nemomobile.lipstick 0.1
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE. // SOFTWARE.
import QtQuick 2.0 import QtQuick 2.6
WindowWrapperBase { WindowWrapperBase {
id: wrapper id: wrapper
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE. // SOFTWARE.
import QtQuick 2.0 import QtQuick 2.6
Item { Item {
id: wrapper id: wrapper
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE. // SOFTWARE.
import QtQuick 2.1 import QtQuick 2.6
import QtQuick.Window 2.1 import QtQuick.Window 2.1
import org.nemomobile.lipstick 0.1 import org.nemomobile.lipstick 0.1
......
...@@ -46,8 +46,7 @@ qml.files = qml/MainScreen.qml \ ...@@ -46,8 +46,7 @@ qml.files = qml/MainScreen.qml \
qml/GlacierRotation.qml \ qml/GlacierRotation.qml \
qml/DeviceLockUI.qml \ qml/DeviceLockUI.qml \
qml/LauncherItemWrapper.qml \ qml/LauncherItemWrapper.qml \
qml/LauncherItemFolder.qml \ qml/LauncherItemFolder.qml
qml/SearchListView.qml
qmlcompositor.path = /usr/share/lipstick-glacier-home-qt5/qml/compositor qmlcompositor.path = /usr/share/lipstick-glacier-home-qt5/qml/compositor
qmlcompositor.files = qml/compositor/WindowWrapperMystic.qml \ qmlcompositor.files = qml/compositor/WindowWrapperMystic.qml \
...@@ -83,6 +82,10 @@ statusbar.files = qml/statusbar/BatteryPanel.qml\ ...@@ -83,6 +82,10 @@ statusbar.files = qml/statusbar/BatteryPanel.qml\
qml/statusbar/NumButton.qml \ qml/statusbar/NumButton.qml \
qml/statusbar/MediaController.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 \ settingswallpaperplugin.files = settings-plugins/wallpaper/wallpaper.qml \
settings-plugins/wallpaper/selectImage.qml \ settings-plugins/wallpaper/selectImage.qml \
settings-plugins/wallpaper/wallpaper.svg settings-plugins/wallpaper/wallpaper.svg
...@@ -112,7 +115,8 @@ INSTALLS += styles \ ...@@ -112,7 +115,8 @@ INSTALLS += styles \
statusbar\ statusbar\
settingswallpaperplugin\ settingswallpaperplugin\
settingsnotificationsplugin\ settingsnotificationsplugin\
settingspluginconfig settingspluginconfig \
applauncher
CONFIG += qt link_pkgconfig CONFIG += qt link_pkgconfig
QT += quick compositor QT += quick compositor
...@@ -130,43 +134,17 @@ PKGCONFIG += lipstick-qt5 \ ...@@ -130,43 +134,17 @@ PKGCONFIG += lipstick-qt5 \
nemodevicelock nemodevicelock
OTHER_FILES += qml/*.qml \ OTHER_FILES += qml/*.qml \
qml/MainScreen.qml \ qml/compositor/*.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/scripts/desktop.js \ qml/scripts/desktop.js \
qml/FeedsPage.qml \
qml/Statusbar.qml \
qml/StatusbarItem.qml \
qml/WifiPanel.qml \
nemovars.conf \ nemovars.conf \
qml/SimPanel.qml \ qml/connectivity/*.qml
qml/NumButton.qml \
qml/USBModeSelector.qml \
qml/VolumeControl.qml \
qml/BatteryPanel.qml \
qml/CommonPanel.qml \
qml/ShutdownScreen.qml \
qml/GlacierRotation.qml
TRANSLATIONS += i18n/glacer-home.ts TRANSLATIONS += i18n/glacer-home.ts
DISTFILES += \ DISTFILES += \
i18n/glacer-home.ts \ i18n/glacer-home.ts \
qml/connectivity/ConnectionSelector.qml \ qml/*/*.qml \
qml/statusbar/BatteryIndicator.qml \ settings-plugins/*/*.qml \
settings-plugins/wallpaper/selectImage.qml \ settings-plugins/*/*.json \
settings-plugins/notifications/notifications.json \ settings-plugins/*/*.svg
settings-plugins/notifications/notifications.svg \
settings-plugins/notifications/notifications.qml
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment