28
28
property string icon: "../../graphics/applicationIcons/" + application.icon + ".png" // FIXME: this is temporary
32
anchors.left: parent.left
33
anchors.leftMargin: units.gu(2)
35
AppScreenshotCarousel {model: [
36
icon.indexOf("/") == -1 ? "image://gicon/" + icon : icon,
37
icon.indexOf("/") == -1 ? "image://gicon/" + icon : icon,
38
icon.indexOf("/") == -1 ? "image://gicon/" + icon : icon,
39
icon.indexOf("/") == -1 ? "image://gicon/" + icon : icon,
40
icon.indexOf("/") == -1 ? "image://gicon/" + icon : icon,
41
icon.indexOf("/") == -1 ? "image://gicon/" + icon : icon,
42
icon.indexOf("/") == -1 ? "image://gicon/" + icon : icon,
43
icon.indexOf("/") == -1 ? "image://gicon/" + icon : icon,
44
icon.indexOf("/") == -1 ? "image://gicon/" + icon : icon
51
property int buttonWidth: Math.min(units.gu(22), (width - spacing) / 2)
59
// horizontalAlignment: Text.AlignHCenter
63
maximumRating: 10 // FIXME: this should happen on the backend side
70
width: parent.buttonWidth
72
text: root.price ? "Buy" : "Install"
74
iconSource: "graphics/icon_button_u1.png"
78
btnInstall.visible = false;
79
progressBar.opacity = 1;
80
progressBar.timer.start();
90
width: parent.buttonWidth
91
height: btnInstall.height
93
property alias timer: timerEvent
95
Behavior on opacity { PropertyAnimation { duration: 400; } }
102
if(progressBar.value < 100){
103
progressBar.value += 10;
104
timerEvent.restart();
106
progressBar.opacity = 0;
34
height: purchaseLoader.onScreen ? preview.height : details.height
40
bottomMargin: -bottomOverflow
46
topGapPx: (1 - gap) * positionPx
47
topOpacity: Math.max(0, (1 - gap * 1.2))
48
bottomGapPx: positionPx + gap * (targetBottomGapPx - positionPx)
49
bottomOverflow: units.gu(6)
50
bottomOpacity: 1 - (gap * 0.8)
52
property int targetBottomGapPx: height - units.gu(8) - bottomOverflow
53
property real gap: purchaseLoader.open ? 1.0 : 0.0
58
easing.type: Easing.InOutQuad
60
if (!purchaseLoader.open && !running) {
61
purchaseLoader.onScreen = false;
120
wrapMode: Text.WordWrap
125
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ut purus sed enim tempus eleifend. Aliquam aliquet lobortis sapien, eget rutrum nisl vulputate sed. Vivamus pretium imperdiet lacus, a venenatis ipsum interdum nec. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos."
129
width: parent.width - units.gu(4)
130
wrapMode: Text.WordWrap
141
wrapMode: Text.WordWrap
147
text: "Artistically Pleasing"
151
width: parent.width - units.gu(4)
152
wrapMode: Text.WordWrap
159
maximumRating: 10 // FIXME: this should happen on the backend side
163
text: "Diego Sarmentero"
180
text: "Very cool concept. While I'd rather not keep it as my main application due to (apparent) performance issues, this is certainly something i'll show to friends with more powerful devices."
184
width: parent.width - units.gu(4)
185
wrapMode: Text.WordWrap
192
text: "Good concept..."
196
width: parent.width - units.gu(4)
197
wrapMode: Text.WordWrap
204
maximumRating: 10 // FIXME: this should happen on the backend side
208
text: "Roberto Alsina"
225
text: "Now needs options to customize..."
229
width: parent.width - units.gu(4)
230
wrapMode: Text.WordWrap
241
width: parent.width - units.gu(4)
242
wrapMode: Text.WordWrap
249
maximumRating: 10 // FIXME: this should happen on the backend side
270
text: "Pity i thought its gonna be great due to the pictures."
274
width: parent.width - units.gu(4)
275
wrapMode: Text.WordWrap
71
onDownload: root.download(index);
73
purchaseLoader.open = true;
74
purchaseLoader.opacity = 1;
75
effectPurchase.positionPx = mapToItem(details, 0, 0).y - 100;
81
height: effectPurchase.bottomGapPx - effectPurchase.topGapPx
84
topMargin: effectPurchase.topGapPx
88
sourceComponent: onScreen ? purchaseComponent : undefined
91
Behavior on opacity { PropertyAnimation { duration: 400 } }
93
property bool open: false
94
property bool onScreen: false
97
item.price = root.price;
108
id: purchaseComponent
117
purchaseLoader.opacity = 0;
123
details.start_download();