~dpniel/dekko/0.3

« back to all changes in this revision

Viewing changes to qml/MessageListView/MessagesListView.qml

Merge multiselect

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
    //-----------------------------------
31
31
    property alias hasScrollbar: listViewScrollBar.visible
32
32
    property var _currentSwipedItem: null
 
33
    property var editActions: [selectAllAction, multiDeleteAction]
33
34
 
34
35
    //-----------------------------------
35
36
    // SIGNALS
89
90
        id: messageListModel
90
91
        model: imapAccess.imapModel
91
92
        sortOrder: Qt.DescendingOrder
92
 
        mailbox: messageListPage.title
 
93
        mailbox: messageListPage.mailBox
93
94
    }
94
95
 
95
96
    Component {
155
156
            left: parent.left
156
157
            right: parent.right
157
158
        }
 
159
        color: model.isMarkedRead ? Theme.palette.normal.background : "white"
 
160
        selectedColor: color
158
161
        onMarkMessageDeleted: imapAccess.markMessageDeleted(imapAccess.deproxifiedIndex(root.model.modelIndex(model.index)),
159
162
                                                            !model.isMarkedDeleted)
160
163
        onMarkMessageFlagged: flaggedAction.trigger()
161
164
 
162
165
        onItemClicked: {
 
166
            if (selectionMode) {
 
167
                if (selected) {
 
168
                    messagesListView.deselectItem(delegate);
 
169
                    if (messagesListView.selectedItems.count == 0) {
 
170
                        messagesListView.cancelSelection();
 
171
                    }
 
172
                } else {
 
173
                    messagesListView.selectItem(delegate);
 
174
                }
 
175
                return;
 
176
            }
 
177
 
163
178
            if (model.hasModelChildren) {
164
179
                root.model.rootIndex = root.model.modelIndex(index)
165
180
            } else {
167
182
            }
168
183
        }
169
184
//            messageSelected(messageUid)
 
185
        onItemPressAndHold: {
 
186
            messagesListView.startSelection();
 
187
            messagesListView.selectItem(delegate);
 
188
        }
 
189
 
170
190
        selected: messagesListView.isSelected(delegate)
171
191
        selectionMode: messagesListView.isInSelectionMode
172
192
        isFirst: model.index === 0
219
239
        }
220
240
    }
221
241
 
 
242
    Action {
 
243
        id: multiDeleteAction
 
244
        iconName: "delete"
 
245
        onTriggered: {
 
246
            for (var i = 0; i < messagesListView.selectedItems.count; i++) {
 
247
                imapAccess.markMessageDeleted(
 
248
                            imapAccess.deproxifiedIndex(
 
249
                                root.model.modelIndex(
 
250
                                    (messagesListView.selectedItems.get(i).itemsIndex))),
 
251
                                true);
 
252
            }
 
253
            messagesListView.cancelSelection();
 
254
        }
 
255
    }
 
256
 
 
257
    Action {
 
258
        id: selectAllAction
 
259
        iconName: "select"
 
260
        onTriggered: {
 
261
            messagesListView.selectAll();
 
262
        }
 
263
    }
 
264
 
222
265
    //-----------------------------------
223
266
    // PRIVATE PROPERTIES & FUNCTIONS
224
267
    //-----------------------------------