Warning, /graphics/krita/libs/libqml/qml/panels/PresetsPanel.qml is written in an unsupported language. File is not indexed.
0001 /* This file is part of the KDE project
0002 * SPDX-FileCopyrightText: 2012 Arjen Hiemstra <ahiemstra@heimr.nl>
0003 *
0004 * SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.3
0008 import org.krita.sketch 1.0
0009 import org.krita.sketch.components 1.0
0010
0011 Panel {
0012 id: base;
0013 name: "Presets";
0014 colorSet: "presets";
0015
0016 /*actions: [
0017 Button {
0018 id: addButton;
0019
0020 width: Constants.GridWidth / 2
0021 height: Constants.GridHeight;
0022
0023 color: "transparent";
0024 image: "../images/svg/icon-add.svg"
0025 textColor: "white";
0026 shadow: false;
0027 highlight: false;
0028 onClicked: base.toggleEdit();
0029
0030 states: State {
0031 name: "edit"
0032 when: base.state == "edit";
0033
0034 PropertyChanges { target: addButton; text: "Cancel"; color: Constants.Theme.NegativeColor; width: Constants.GridWidth * 2; }
0035 }
0036
0037 transitions: Transition {
0038 to: "edit";
0039 reversible: true;
0040
0041 ParallelAnimation {
0042 NumberAnimation { target: addButton; properties: "width"; duration: Constants.AnimationDuration; }
0043 ColorAnimation { target: addButton; properties: "color"; duration: Constants.AnimationDuration; }
0044 }
0045 }
0046 },
0047 Button {
0048 id: editButton;
0049
0050 width: Constants.GridWidth / 2
0051 height: Constants.GridHeight;
0052
0053 text: ""
0054 image: "../images/svg/icon-edit.svg"
0055 color: "transparent";
0056 textColor: "white";
0057 shadow: false;
0058 highlight: false;
0059 onClicked: base.toggleEdit();
0060
0061 states: State {
0062 name: "edit"
0063 when: base.state == "edit";
0064
0065 PropertyChanges { target: editButton; text: "Save"; color: Constants.Theme.PositiveColor; width: Constants.GridWidth * 2; }
0066 }
0067
0068 transitions: Transition {
0069 to: "edit";
0070 reversible: true;
0071
0072 ParallelAnimation {
0073 NumberAnimation { target: editButton; properties: "width"; duration: Constants.AnimationDuration; }
0074 ColorAnimation { target: editButton; properties: "color"; duration: Constants.AnimationDuration; }
0075 }
0076 }
0077 }
0078 ]*/
0079
0080 PresetModel {
0081 id: presetsModel;
0082 view: sketchView.view;
0083 onCurrentPresetChanged: {
0084 peekViewGrid.currentIndex = nameToIndex(currentPreset);
0085 fullViewGrid.currentIndex = nameToIndex(currentPreset);
0086 }
0087 }
0088 Connections {
0089 target: sketchView;
0090 onLoadingFinished: {
0091 // if (window.applicationName === undefined) {
0092 if(toolManager.currentTool === null)
0093 toolManager.requestToolChange("KritaShape/KisToolBrush");
0094 presetsModel.currentPreset = Settings.lastPreset;
0095 // }
0096 }
0097 }
0098
0099 peekContents: GridView {
0100 id: peekViewGrid;
0101 anchors.fill: parent;
0102 keyNavigationWraps: false
0103
0104 model: presetsModel;
0105 delegate: Button {
0106 width: Constants.GridWidth;
0107 height: Constants.GridHeight;
0108
0109 checked: GridView.isCurrentItem;
0110 checkedColor: Settings.theme.color("panels/presets/preset/active");
0111
0112 color: Settings.theme.color("panels/presets/preset/inactive")
0113
0114 highlightColor: Settings.theme.color("panels/presets/preset/active")
0115
0116 Image {
0117 anchors {
0118 bottom: peekLabel.top
0119 top: parent.top;
0120 horizontalCenter: parent.horizontalCenter;
0121 margins: 2
0122 }
0123 source: model.image
0124 fillMode: Image.PreserveAspectFit;
0125 asynchronous: true;
0126 }
0127 Label {
0128 id: peekLabel
0129 anchors {
0130 left: parent.left
0131 right: parent.right
0132 bottom: parent.bottom
0133 margins: 2
0134 }
0135 elide: Text.ElideMiddle;
0136 text: model.text;
0137 font.pixelSize: Constants.SmallFontSize
0138 horizontalAlignment: Text.AlignHCenter
0139 }
0140
0141 onClicked: {
0142 presetsModel.activatePreset(index);
0143 toolManager.requestToolChange("KritaShape/KisToolBrush");
0144 peekViewGrid.currentIndex = index;
0145 fullViewGrid.currentIndex = index;
0146 }
0147 }
0148
0149 cellWidth: Constants.GridWidth;
0150 cellHeight: Constants.GridHeight;
0151 ScrollDecorator {
0152 flickableItem: parent;
0153 }
0154 }
0155
0156 fullContents: PageStack {
0157 id: contentArea;
0158 anchors.fill: parent;
0159 initialPage: GridView {
0160 id: fullViewGrid;
0161 anchors.fill: parent;
0162 model: presetsModel;
0163 delegate: Item {
0164 height: Constants.GridHeight;
0165 width: contentArea.width;
0166 Rectangle {
0167 anchors.fill: parent;
0168 color: (model.name === presetsModel.currentPreset) ?
0169 Settings.theme.color("panels/presets/preset/active") :
0170 Settings.theme.color("panels/presets/preset/inactive");
0171 }
0172 Rectangle {
0173 id: presetThumbContainer;
0174 anchors {
0175 verticalCenter: parent.verticalCenter;
0176 left: parent.left;
0177 }
0178 height: Constants.GridHeight;
0179 width: height;
0180 color: "transparent";
0181 Image {
0182 anchors.centerIn: parent;
0183 cache: false;
0184 source: model.image;
0185 smooth: true;
0186 width: parent.width * 0.8;
0187 height: parent.height * 0.8;
0188 fillMode: Image.PreserveAspectFit;
0189 asynchronous: true;
0190 }
0191 }
0192 Label {
0193 anchors {
0194 top: parent.top;
0195 left: presetThumbContainer.right;
0196 right: parent.right;
0197 bottom: parent.bottom;
0198 }
0199 wrapMode: Text.Wrap;
0200 elide: Text.ElideRight;
0201 text: model.text;
0202 maximumLineCount: 3;
0203 }
0204 MouseArea {
0205 anchors.fill: parent;
0206 onClicked: {
0207 presetsModel.activatePreset(index);
0208 toolManager.requestToolChange("KritaShape/KisToolBrush");
0209 peekViewGrid.currentIndex = index;
0210 fullViewGrid.currentIndex = index;
0211 }
0212 }
0213 }
0214
0215 cellWidth: contentArea.width;
0216 cellHeight: Constants.GridHeight;
0217 ScrollDecorator {
0218 flickableItem: parent;
0219 }
0220 }
0221 }
0222
0223 onStateChanged: if ( state != "edit" && contentArea.depth > 1 ) {
0224 contentArea.pop();
0225 }
0226
0227 function toggleEdit() {
0228 if ( base.state == "edit" ) {
0229 base.state = "full";
0230 contentArea.pop();
0231 } else if ( base.state == "full" ) {
0232 base.state = "edit";
0233 contentArea.push( editPresetPage );
0234 }
0235 }
0236
0237 Component { id: editPresetPage; EditPresetPage { } }
0238 }