~matti-rintanikkola-d/my-webapp-group/trunk

« back to all changes in this revision

Viewing changes to qml/WebViewImpl.qml

  • Committer: Matti Rinta-Nikkola
  • Date: 2016-05-01 20:04:13 UTC
  • Revision ID: matti.rintanikkola@gmail.com-20160501200413-p3q1cyugemo9j74m
merge webbrowser app modifications, step II

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import Ubuntu.Web 0.2
23
23
// import webbrowsercommon.private 0.1
24
24
import "actions" as Actions
25
 
import com.canonical.Oxide 1.8 as Oxide
26
25
 
27
26
WebView {
28
27
    id: webview
36
35
    confirmDialog: ConfirmDialog {}
37
36
    promptDialog: PromptDialog {}
38
37
    beforeUnloadDialog: BeforeUnloadDialog {}*/
39
 
    filePicker: contentPickerLoader.item || filePickerLoader.item
 
38
    signal showDownloadDialog(string downloadId, var contentType, var downloader, string filename, string mimeType)
 
39
 
40
40
    QtObject {
41
41
        id: internal
42
42
 
43
43
        readonly property var downloadMimeTypesBlacklist: [
44
44
            "application/x-shockwave-flash", // http://launchpad.net/bugs/1379806
45
45
        ]
46
 
        function instantiateShareComponent() {
47
 
            var component = Qt.createComponent("Share.qml")
48
 
            if (component.status == Component.Ready) {
49
 
                var share = component.createObject(webview)
50
 
                share.onDone.connect(share.destroy)
51
 
                return share
52
 
            }
53
 
            return null
54
 
        }
55
 
 
56
 
        function shareLink(url, title) {
57
 
            var share = instantiateShareComponent()
58
 
            if (share) share.shareLink(url, title)
59
 
        }
60
 
 
61
 
        function shareText(text) {
62
 
            var share = instantiateShareComponent()
63
 
            if (share) share.shareText(text)
64
 
        }
65
 
 
66
46
    }
67
47
 
68
48
    onFullscreenRequested: webview.fullscreen = fullscreen
72
52
            internal.downloadMimeTypesBlacklist.indexOf(request.mimeType) > -1) {
73
53
            return
74
54
        }
75
 
 
76
55
        if (downloadLoader.status == Loader.Ready) {
77
56
            var headers = { }
78
57
            if (request.cookies.length > 0) {
109
88
    }
110
89
 
111
90
    Loader {
112
 
        id: contentPickerLoader
113
 
        source: "ContentPickerDialog.qml"
114
 
        asynchronous: true
115
 
    }
116
 
    Loader {
117
 
        id: filePickerLoader
118
 
        source: "FilePickerDialog.qml"
119
 
        asynchronous: true
120
 
    }
121
 
 
122
 
    Loader {
123
91
        id: downloadLoader
124
 
        // TODO: Use the ubuntu download manager on desktop as well
125
 
        //  (https://launchpad.net/bugs/1477310). This will require to have
126
 
        //  ubuntu-download-manager in main (https://launchpad.net/bugs/1488425).
127
92
        source: "Downloader.qml"
128
93
        asynchronous: true
129
94
    }
130
 
// mrn 14/7/2015: added contextualActions (WebViewImplOxide.qml)
131
 
// mrn 5/12/2015: replaced with a new list
132
 
    contextualActions: ActionList {
133
 
        Actions.CopyLink {
134
 
            enabled: webview.contextModel && webview.contextModel.linkUrl.toString()
135
 
            onTriggered: Clipboard.push(["text/plain", contextModel.linkUrl.toString()])
136
 
        }
137
 
        Actions.CopyImage {
138
 
            enabled: webview.contextModel &&
139
 
                     (webview.contextModel.mediaType === Oxide.WebView.MediaTypeImage) &&
140
 
                     webview.contextModel.srcUrl.toString()
141
 
            onTriggered: Clipboard.push(["text/plain", contextModel.srcUrl.toString()])
142
 
        }
143
 
        Actions.Undo {
144
 
            enabled: webview.contextModel && webview.contextModel.isEditable &&
145
 
                     (webview.contextModel.editFlags & Oxide.WebView.UndoCapability)
146
 
            onTriggered: webview.executeEditingCommand(Oxide.WebView.EditingCommandUndo)
147
 
        }
148
 
        Actions.Redo {
149
 
            enabled: webview.contextModel && webview.contextModel.isEditable &&
150
 
                     (webview.contextModel.editFlags & Oxide.WebView.RedoCapability)
151
 
            onTriggered: webview.executeEditingCommand(Oxide.WebView.EditingCommandRedo)
152
 
        }
153
 
        Actions.Cut {
154
 
            enabled: webview.contextModel && webview.contextModel.isEditable &&
155
 
                     (webview.contextModel.editFlags & Oxide.WebView.CutCapability)
156
 
            onTriggered: webview.executeEditingCommand(Oxide.WebView.EditingCommandCut)
157
 
        }
158
 
        Actions.Copy {
159
 
            enabled: webview.contextModel && webview.contextModel.isEditable &&
160
 
                     (webview.contextModel.editFlags & Oxide.WebView.CopyCapability)
161
 
            onTriggered: webview.executeEditingCommand(Oxide.WebView.EditingCommandCopy)
162
 
        }
163
 
        Actions.Paste {
164
 
            enabled: webview.contextModel && webview.contextModel.isEditable &&
165
 
                     (webview.contextModel.editFlags & Oxide.WebView.PasteCapability)
166
 
            onTriggered: webview.executeEditingCommand(Oxide.WebView.EditingCommandPaste)
167
 
        }
168
 
        Actions.Erase {
169
 
            enabled: webview.contextModel && webview.contextModel.isEditable &&
170
 
                     (webview.contextModel.editFlags & Oxide.WebView.EraseCapability)
171
 
            onTriggered: webview.executeEditingCommand(Oxide.WebView.EditingCommandErase)
172
 
        }
173
 
        Actions.SelectAll {
174
 
            enabled: webview.contextModel && webview.contextModel.isEditable &&
175
 
                     (webview.contextModel.editFlags & Oxide.WebView.SelectAllCapability)
176
 
            onTriggered: webview.executeEditingCommand(Oxide.WebView.EditingCommandSelectAll)
177
 
        }
178
 
        // mrn 12/12/2015: from Browser.qml...
179
 
        Actions.Share {
180
 
            objectName: "ShareContextualAction"
181
 
            enabled: webview.contextModel &&
182
 
                     (webview.contextModel.linkUrl.toString() || webview.contextModel.selectionText)
183
 
            onTriggered: {
184
 
                if (webview.contextModel.linkUrl.toString()) {
185
 
                    internal.shareLink(contextModel.linkUrl.toString(), webview.contextModel.linkText)
186
 
                } else if (webview.contextModel.selectionText) {
187
 
                    internal.shareText(webview.contextModel.selectionText)
188
 
                }
189
 
            }
190
 
        }
 
95
 
 
96
    Connections {
 
97
        target: downloadLoader.item
 
98
        onShowDownloadDialog: {
 
99
            showDownloadDialog(downloadId, contentType, downloader, filename, mimeType)
 
100
        }
 
101
    }
 
102
 
 
103
    function requestGeolocationPermission(request) {
 
104
        PopupUtils.open(Qt.resolvedUrl("GeolocationPermissionRequest.qml"),
 
105
                        webview.currentWebview, {"request": request})
 
106
        // TODO: we might want to store the answer to avoid requesting
 
107
        //       the permission everytime the user visits this site.
191
108
    }
192
109
}