harbour-muchkin/qml/Icon.qml

157 lines
4.7 KiB
QML

import QtQuick 2.0
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.3
import Nemo.Notifications 1.0
Page {
id: iconEditor
property var attrs
property var corners: [true, true, true, true]
Notification {
id: notification
appIcon: "/usr/share/icons/hicolor/86x86/apps/harbour-muchkin"
expireTimeout: 5000
function sendMessage(msg) {
notification.previewBody = msg
notification.publish()
}
}
SilicaFlickable {
id: mainList
anchors.fill: parent
PullDownMenu {
MenuItem {
text: "Search a better icon"
onClicked: {
py.importModule("main", function(){
py.call("main.scrape_icon", [iconEditor.attrs.URL], function(result){
if(result) {
icon.source = result;
iconEditor.attrs.Icon = result;
notification.sendMessage("A better icon found");
} else {
notification.sendMessage("Not better icon found");
}
})
})
}
}
}
PageHeader {
id: header
width: parent.width
title: "name: " + attrs.Name
}
SilicaGridView {
anchors.top: header.bottom
width: parent.width
height: width
cellWidth: width / 2
cellHeight: cellWidth
model: ListModel {
id: gridItems
ListElement {
idCell: 0
activated: true
}
ListElement {
idCell: 1
activated: true
}
ListElement {
idCell: 2
activated: true
}
ListElement {
idCell: 3
activated: true
}
}
delegate: GridItem {
onClicked: {
activated = !activated
iconEditor.corners[idCell] = activated
py.importModule("main", function(){
py.call("main.sailify", [(iconEditor.attrs.old_icon || iconEditor.attrs.Icon).toString(), iconEditor.corners, size.value], function(result){
icon.source = result
})
})
}
}
}
Image {
id: icon
anchors.top: header.bottom
width: parent.width
height: width
}
Slider {
id: size
anchors.top: icon.bottom
anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: 10
label: "Size:"
width: parent.width
minimumValue: 0
maximumValue: 100
stepSize: 10
value: 100
onReleased: {
py.importModule("main", function(){
py.call("main.sailify", [(iconEditor.attrs.old_icon || iconEditor.attrs.Icon).toString(), iconEditor.corners, size.value], function(result){
icon.source = result
})
})
}
}
Button {
anchors.top: size.bottom
anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: 20
text: "Save"
onClicked: {
if(iconEditor.attrs.old_icon === undefined) {
iconEditor.attrs.old_icon = iconEditor.attrs.Icon.toString()
}
iconEditor.attrs.Icon = icon.source.toString()
py.importModule("main", function(){
py.call("main.save_icon", [iconEditor.attrs], function(result){
if(result){
pageStack.pop()
pageStack.completeAnimation()
pageStack.currentPage.mainList.reload()
}
})
})
}
}
Python {
id: py
Component.onCompleted: {
py.addImportPath(Qt.resolvedUrl("../src"));
py.importModule("main", function(){
py.call("main.sailify", [(iconEditor.attrs.old_icon || iconEditor.attrs.Icon).toString(), [1, 1, 1, 1], size.value], function(result){
icon.source = result
})
})
}
}
}
}