~mterry/ubuntu-calculator-app/confined

« back to all changes in this revision

Viewing changes to app/ubuntu-calculator-app.qml

  • Committer: Bartosz Kosiorek
  • Date: 2015-01-13 15:36:47 UTC
  • mfrom: (59 reboot)
  • mto: This revision was merged to the branch mainline in revision 60.
  • Revision ID: gang65@poczta.onet.pl-20150113153647-hqmxhcw8a37au0s1
MergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
69
69
            StateChangeScript {
70
70
                script: header.hide()
71
71
            }
 
72
            PropertyChanges {
 
73
                target: scrollableView
 
74
                clip: false
 
75
            }
72
76
        },
73
77
        State {
74
78
            name: "selection"
75
79
            StateChangeScript {
76
80
                script: header.show()
77
81
            }
 
82
            PropertyChanges {
 
83
                target: scrollableView
 
84
                clip: true
 
85
            }
78
86
        }
79
87
    ]
80
88
 
234
242
        }
235
243
    }
236
244
 
237
 
    MultipleSelectionVisualModel {
238
 
        id: visualModel
239
 
        model: calculationHistory.getContents()
240
 
 
241
 
        onSelectionDone: {
242
 
            for (var i = 0; i < items.count; i++) {
243
 
                calculationHistory.deleteCalc(items.get(i).model.dbId, items.get(i).model.index);
244
 
            }
245
 
        }
246
 
 
247
 
        delegate: Screen {
 
245
    Component {
 
246
        id: emptyDelegate
 
247
        Item { }
 
248
    }
 
249
 
 
250
    Component {
 
251
        id: screenDelegateComponent
 
252
        Screen {
248
253
            id: screenDelegate
249
254
            width: parent ? parent.width : 0
250
255
 
 
256
            property var model: itemModel
251
257
            visible: model.dbId != -1
252
258
 
253
259
            selectionMode: visualModel.isInSelectionMode
254
 
            selected: visualModel.isSelected(screenDelegate)
 
260
            selected: visualModel.isSelected(visualDelegate)
255
261
 
256
262
            property var removalAnimation
257
263
            function remove() {
258
264
                removalAnimation.start();
259
265
            }
260
266
 
 
267
            // parent is the loader component
 
268
            property var visualDelegate: parent ? parent : null
 
269
 
261
270
            onSwippingChanged: {
262
271
                visualModel.updateSwipeState(screenDelegate);
263
272
            }
268
277
 
269
278
            onItemClicked: {
270
279
                if (visualModel.isInSelectionMode) {
271
 
                    if (!visualModel.selectItem(screenDelegate)) {
272
 
                        visualModel.deselectItem(screenDelegate);
 
280
                    if (!visualModel.selectItem(visualDelegate)) {
 
281
                        visualModel.deselectItem(visualDelegate);
273
282
                    }
274
283
                }
275
284
            }
276
285
 
277
286
            onItemPressAndHold: {
278
287
                visualModel.startSelection();
279
 
                visualModel.selectItem(screenDelegate);
 
288
                visualModel.selectItem(visualDelegate);
280
289
            }
281
290
 
282
 
            leftSideAction: Action {
283
 
                iconName: "delete"
284
 
                text: i18n.tr("Delete")
285
 
                onTriggered: {
286
 
                    screenDelegate.remove();
 
291
            leftSideAction: screenDelegateDeleteAction.item
 
292
 
 
293
            Loader {
 
294
                id: screenDelegateDeleteAction
 
295
                sourceComponent: Action {
 
296
                    iconName: "delete"
 
297
                    text: i18n.tr("Delete")
 
298
                    onTriggered: {
 
299
                        screenDelegate.remove();
 
300
                    }
287
301
                }
288
302
            }
289
303
 
306
320
 
307
321
                ScriptAction {
308
322
                    script: {
309
 
                        calculationHistory.deleteCalc(dbId, index);
310
 
                    }
311
 
                }
312
 
            }
313
 
        }
314
 
 
 
323
                        calculationHistory.deleteCalc(model.dbId, model.index);
 
324
                    }
 
325
                }
 
326
            }
 
327
        }
 
328
    }
 
329
 
 
330
    MultipleSelectionVisualModel {
 
331
        id: visualModel
 
332
        model: calculationHistory.getContents()
 
333
 
 
334
        onSelectionDone: {
 
335
            for (var i = 0; i < items.count; i++) {
 
336
                calculationHistory.deleteCalc(items.get(i).model.dbId, items.get(i).model.index);
 
337
            }
 
338
        }
 
339
 
 
340
        delegate: Component {
 
341
            Loader {
 
342
                property var itemModel: model
 
343
                width: parent.width
 
344
                height: model.dbId != -1 ? item.height : 0;
 
345
                sourceComponent: screenDelegateComponent
 
346
                opacity: ((y+height) >= scrollableView.contentY) && (y <= (scrollableView.contentY + scrollableView.height)) ? 1 : 0
 
347
                onOpacityChanged: {
 
348
                    if (this.hasOwnProperty('item') && this.item != null) {
 
349
                        if (opacity > 0) {
 
350
                            sourceComponent = screenDelegateComponent;
 
351
                        } else {
 
352
                            this.item.visible = false;
 
353
                            sourceComponent = emptyDelegate;
 
354
                        }
 
355
                    }
 
356
                }
 
357
            }
 
358
        }
315
359
    }
316
360
 
317
361
    ScrollableView {
323
367
        }
324
368
        id: scrollableView
325
369
        objectName: "scrollableView"
326
 
        clip: true
 
370
 
 
371
        Component.onCompleted: {
 
372
            // FIXME: workaround for qtubuntu not returning values depending on the grid unit definition
 
373
            // for Flickable.maximumFlickVelocity and Flickable.flickDeceleration
 
374
            var scaleFactor = units.gridUnit / 8;
 
375
            maximumFlickVelocity = maximumFlickVelocity * scaleFactor;
 
376
            flickDeceleration = flickDeceleration * scaleFactor;
 
377
        }
327
378
 
328
379
        Repeater {
329
380
            id: formulaView
371
422
            id: keyboardLoader
372
423
            width: parent.width
373
424
            source: mainView.width > mainView.height ? "ui/LandscapeKeyboard.qml" : "ui/PortraiKeyboard.qml"
 
425
            opacity: ((y+height) >= scrollableView.contentY) && (y <= (scrollableView.contentY + scrollableView.height)) ? 1 : 0
374
426
        }
375
 
 
376
427
    }
377
428
}
378
429