Merge lp:~abreu-alexandre/webbrowser-app/webapp-download into lp:webbrowser-app

Proposed by Alexandre Abreu
Status: Work in progress
Proposed branch: lp:~abreu-alexandre/webbrowser-app/webapp-download
Merge into: lp:webbrowser-app
Diff against target: 1486 lines (+460/-229)
23 files modified
po/webbrowser-app.pot (+117/-123)
src/app/CMakeLists.txt (+1/-0)
src/app/DownloadDelegate.qml (+0/-1)
src/app/DownloadHandler.qml (+1/-1)
src/app/DownloadsPage.qml (+2/-3)
src/app/browserapplication.cpp (+6/-0)
src/app/single-instance-manager.cpp (+5/-0)
src/app/webbrowser/BookmarksView.qml (+1/-0)
src/app/webbrowser/BookmarksViewWide.qml (+1/-0)
src/app/webbrowser/Browser.qml (+3/-3)
src/app/webbrowser/CMakeLists.txt (+0/-1)
src/app/webbrowser/HistoryView.qml (+1/-0)
src/app/webbrowser/HistoryViewWide.qml (+1/-0)
src/app/webbrowser/SettingsPage.qml (+1/-0)
src/app/webbrowser/webbrowser-app.cpp (+2/-1)
src/app/webcontainer/ContentDownloadDialog.qml (+100/-10)
src/app/webcontainer/PopupWindowController.qml (+20/-15)
src/app/webcontainer/PopupWindowOverlay.qml (+7/-0)
src/app/webcontainer/WebApp.qml (+172/-0)
src/app/webcontainer/WebappContainerWebview.qml (+12/-5)
src/app/webcontainer/WebappWebview.qml (+4/-58)
src/app/webcontainer/webapp-container.cpp (+1/-6)
tests/unittests/downloads-model/CMakeLists.txt (+2/-2)
To merge this branch: bzr merge lp:~abreu-alexandre/webbrowser-app/webapp-download
Reviewer Review Type Date Requested Status
Ubuntu Phablet Team Pending
Review via email: mp+295980@code.launchpad.net

Description of the change

WIP

To post a comment you must log in.
1467. By Alexandre Abreu

updates

1468. By Alexandre Abreu

merge trunk

Unmerged revisions

1468. By Alexandre Abreu

merge trunk

1467. By Alexandre Abreu

updates

1466. By Alexandre Abreu

draft

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'po/webbrowser-app.pot'
2--- po/webbrowser-app.pot 2016-08-27 13:14:03 +0000
3+++ po/webbrowser-app.pot 2016-09-01 14:43:39 +0000
4@@ -8,7 +8,7 @@
5 msgstr ""
6 "Project-Id-Version: webbrowser-app\n"
7 "Report-Msgid-Bugs-To: \n"
8-"POT-Creation-Date: 2016-08-27 15:13+0200\n"
9+"POT-Creation-Date: 2016-06-23 13:47-0400\n"
10 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13@@ -47,16 +47,16 @@
14 msgid "Password"
15 msgstr ""
16
17-#: src/app/AuthenticationDialog.qml:53 src/app/ConfirmDialog.qml:32
18-#: src/app/HttpAuthenticationDialog.qml:69 src/app/PromptDialog.qml:38
19-#: src/app/webbrowser/BookmarkOptions.qml:143
20+#: src/app/AuthenticationDialog.qml:53 src/app/ConfirmDialog.qml:31
21+#: src/app/DownloadDelegate.qml:186 src/app/HttpAuthenticationDialog.qml:69
22+#: src/app/PromptDialog.qml:38 src/app/webbrowser/BookmarkOptions.qml:143
23 #: src/app/webbrowser/ContentDownloadDialog.qml:114
24 #: src/app/webbrowser/ContextMenuMobile.qml:139
25-#: src/app/webbrowser/DownloadDelegate.qml:187
26 #: src/app/webbrowser/LeavePrivateModeDialog.qml:32
27-#: src/app/webbrowser/SettingsPage.qml:258
28-#: src/app/webbrowser/SettingsPage.qml:312
29+#: src/app/webbrowser/SettingsPage.qml:259
30+#: src/app/webbrowser/SettingsPage.qml:313
31 #: src/app/webcontainer/AccountChooserDialog.qml:96
32+#: src/app/webcontainer/ContentDownloadDialog.qml:114
33 #: src/app/webcontainer/ContextMenuMobile.qml:141
34 msgid "Cancel"
35 msgstr ""
36@@ -69,7 +69,7 @@
37 msgid "Leave"
38 msgstr ""
39
40-#: src/app/BeforeUnloadDialog.qml:32
41+#: src/app/BeforeUnloadDialog.qml:31
42 msgid "Stay"
43 msgstr ""
44
45@@ -86,12 +86,12 @@
46 msgstr ""
47
48 #: src/app/CertificateVerificationDialog.qml:29
49-#: src/app/InvalidCertificateErrorSheet.qml:161
50+#: src/app/InvalidCertificateErrorSheet.qml:160
51 msgid "Proceed anyway"
52 msgstr ""
53
54 #: src/app/CertificateVerificationDialog.qml:35
55-#: src/app/InvalidCertificateErrorSheet.qml:174
56+#: src/app/InvalidCertificateErrorSheet.qml:173
57 msgid "Back to safety"
58 msgstr ""
59
60@@ -99,6 +99,35 @@
61 msgid "JavaScript Confirmation"
62 msgstr ""
63
64+#: src/app/DownloadDelegate.qml:158
65+msgid "Download failed"
66+msgstr ""
67+
68+#: src/app/DownloadDelegate.qml:207
69+msgid "Resume"
70+msgstr ""
71+
72+#: src/app/DownloadsPage.qml:44 src/app/webbrowser/Browser.qml:575
73+#: src/app/webcontainer/WebApp.qml:315
74+msgid "Downloads"
75+msgstr ""
76+
77+#: src/app/DownloadsPage.qml:58
78+msgid "Confirm selection"
79+msgstr ""
80+
81+#: src/app/DownloadsPage.qml:82 src/app/actions/SelectAll.qml:22
82+msgid "Select all"
83+msgstr ""
84+
85+#: src/app/DownloadsPage.qml:98
86+msgid "Delete"
87+msgstr ""
88+
89+#: src/app/DownloadsPage.qml:258
90+msgid "No downloads available"
91+msgstr ""
92+
93 #: src/app/ErrorSheet.qml:36
94 msgid "Network Error"
95 msgstr ""
96@@ -129,26 +158,20 @@
97 msgid "Deny"
98 msgstr ""
99
100-#: src/app/GeolocationPermissionRequest.qml:42
101+#: src/app/GeolocationPermissionRequest.qml:43
102 msgid "Allow"
103 msgstr ""
104
105-#. TRANSLATORS: %1 refers to the URL of the current website and %2 is a string that the website sends with more information about the authentication challenge (technically called "realm")
106-#: src/app/HttpAuthenticationDialog.qml:27
107-#, qt-format
108-msgid "The website at %1 requires authentication. The website says \"%2\""
109-msgstr ""
110-
111-#: src/app/InvalidCertificateErrorSheet.qml:56
112+#: src/app/InvalidCertificateErrorSheet.qml:55
113 msgid "This site security certificate is not trusted.\n"
114 msgstr ""
115
116-#: src/app/InvalidCertificateErrorSheet.qml:64
117+#: src/app/InvalidCertificateErrorSheet.qml:63
118 msgid "Learn more"
119 msgstr ""
120
121 #. TRANSLATORS: %1 refers to the SSL certificate's serial number
122-#: src/app/InvalidCertificateErrorSheet.qml:88
123+#: src/app/InvalidCertificateErrorSheet.qml:87
124 #, qt-format
125 msgid ""
126 "Serial number:\n"
127@@ -156,7 +179,7 @@
128 msgstr ""
129
130 #. TRANSLATORS: %1 refers to the SSL certificate's subject display name
131-#: src/app/InvalidCertificateErrorSheet.qml:95
132+#: src/app/InvalidCertificateErrorSheet.qml:94
133 #, qt-format
134 msgid ""
135 "Subject:\n"
136@@ -164,7 +187,7 @@
137 msgstr ""
138
139 #. TRANSLATORS: %1 refers to the SSL certificate's subject's address
140-#: src/app/InvalidCertificateErrorSheet.qml:103
141+#: src/app/InvalidCertificateErrorSheet.qml:102
142 #, qt-format
143 msgid ""
144 "Subject address:\n"
145@@ -172,7 +195,7 @@
146 msgstr ""
147
148 #. TRANSLATORS: %1 refers to the SSL certificate's issuer display name
149-#: src/app/InvalidCertificateErrorSheet.qml:114
150+#: src/app/InvalidCertificateErrorSheet.qml:113
151 #, qt-format
152 msgid ""
153 "Issuer:\n"
154@@ -180,7 +203,7 @@
155 msgstr ""
156
157 #. TRANSLATORS: %1 refers to the SSL certificate's issuer's address
158-#: src/app/InvalidCertificateErrorSheet.qml:122
159+#: src/app/InvalidCertificateErrorSheet.qml:121
160 #, qt-format
161 msgid ""
162 "Issuer address:\n"
163@@ -188,7 +211,7 @@
164 msgstr ""
165
166 #. TRANSLATORS: %1 refers to the SSL certificate's start date
167-#: src/app/InvalidCertificateErrorSheet.qml:133
168+#: src/app/InvalidCertificateErrorSheet.qml:132
169 #, qt-format
170 msgid ""
171 "Valid from:\n"
172@@ -196,7 +219,7 @@
173 msgstr ""
174
175 #. TRANSLATORS: %1 refers to the SSL certificate's expiry date
176-#: src/app/InvalidCertificateErrorSheet.qml:140
177+#: src/app/InvalidCertificateErrorSheet.qml:139
178 #, qt-format
179 msgid ""
180 "Valid until:\n"
181@@ -204,21 +227,21 @@
182 msgstr ""
183
184 #. TRANSLATORS: %1 refers to the SSL certificate's SHA1 fingerprint
185-#: src/app/InvalidCertificateErrorSheet.qml:147
186+#: src/app/InvalidCertificateErrorSheet.qml:146
187 #, qt-format
188 msgid ""
189 "Fingerprint (SHA1):\n"
190 "%1"
191 msgstr ""
192
193-#: src/app/InvalidCertificateErrorSheet.qml:154
194+#: src/app/InvalidCertificateErrorSheet.qml:153
195 msgid ""
196 "You should not proceed, especially if you have never seen this warning "
197 "before for this site."
198 msgstr ""
199
200 #. TRANSLATORS: %1 refers to the domain name of the SSL certificate
201-#: src/app/InvalidCertificateErrorSheet.qml:188
202+#: src/app/InvalidCertificateErrorSheet.qml:187
203 #, qt-format
204 msgid ""
205 "You attempted to reach %1 but the server presented a security certificate "
206@@ -226,7 +249,7 @@
207 msgstr ""
208
209 #. TRANSLATORS: %1 refers to the domain name of the SSL certificate
210-#: src/app/InvalidCertificateErrorSheet.qml:191
211+#: src/app/InvalidCertificateErrorSheet.qml:190
212 #, qt-format
213 msgid ""
214 "You attempted to reach %1 but the server presented a security certificate "
215@@ -234,7 +257,7 @@
216 msgstr ""
217
218 #. TRANSLATORS: %1 refers to the domain name of the SSL certificate
219-#: src/app/InvalidCertificateErrorSheet.qml:194
220+#: src/app/InvalidCertificateErrorSheet.qml:193
221 #, qt-format
222 msgid ""
223 "You attempted to reach %1 but the server presented a security certificate "
224@@ -242,7 +265,7 @@
225 msgstr ""
226
227 #. TRANSLATORS: %1 refers to the domain name of the SSL certificate
228-#: src/app/InvalidCertificateErrorSheet.qml:197
229+#: src/app/InvalidCertificateErrorSheet.qml:196
230 #, qt-format
231 msgid ""
232 "You attempted to reach %1 but the server presented a security certificate "
233@@ -250,7 +273,7 @@
234 msgstr ""
235
236 #. TRANSLATORS: %1 refers to the domain name of the SSL certificate
237-#: src/app/InvalidCertificateErrorSheet.qml:200
238+#: src/app/InvalidCertificateErrorSheet.qml:199
239 #, qt-format
240 msgid ""
241 "You attempted to reach %1 but the server presented a security certificate "
242@@ -258,7 +281,7 @@
243 msgstr ""
244
245 #. TRANSLATORS: %1 refers to the domain name of the SSL certificate
246-#: src/app/InvalidCertificateErrorSheet.qml:203
247+#: src/app/InvalidCertificateErrorSheet.qml:202
248 #, qt-format
249 msgid ""
250 "You attempted to reach %1 but the server presented an invalid security "
251@@ -266,7 +289,7 @@
252 msgstr ""
253
254 #. TRANSLATORS: %1 refers to the domain name of the SSL certificate
255-#: src/app/InvalidCertificateErrorSheet.qml:206
256+#: src/app/InvalidCertificateErrorSheet.qml:205
257 #, qt-format
258 msgid ""
259 "You attempted to reach %1 but the server presented an insecure security "
260@@ -274,7 +297,7 @@
261 msgstr ""
262
263 #. TRANSLATORS: %1 refers to the domain name of the SSL certificate
264-#: src/app/InvalidCertificateErrorSheet.qml:209
265+#: src/app/InvalidCertificateErrorSheet.qml:208
266 #, qt-format
267 msgid ""
268 "This site security certificate is not trusted\n"
269@@ -380,7 +403,7 @@
270 msgid "Erase"
271 msgstr ""
272
273-#: src/app/actions/FindInPage.qml:23 src/app/webbrowser/Browser.qml:578
274+#: src/app/actions/FindInPage.qml:23 src/app/webbrowser/Browser.qml:568
275 msgid "Find in page"
276 msgstr ""
277
278@@ -410,7 +433,7 @@
279 msgid "Address;URL;www"
280 msgstr ""
281
282-#: src/app/actions/NewTab.qml:23 src/app/webbrowser/Browser.qml:461
283+#: src/app/actions/NewTab.qml:23 src/app/webbrowser/Browser.qml:451
284 #: src/app/webbrowser/TabsBar.qml:91
285 msgid "New Tab"
286 msgstr ""
287@@ -472,11 +495,7 @@
288 msgid "Save video"
289 msgstr ""
290
291-#: src/app/actions/SelectAll.qml:22 src/app/webbrowser/DownloadsPage.qml:83
292-msgid "Select all"
293-msgstr ""
294-
295-#: src/app/actions/Share.qml:22 src/app/webbrowser/Browser.qml:558
296+#: src/app/actions/Share.qml:22 src/app/webbrowser/Browser.qml:548
297 msgid "Share"
298 msgstr ""
299
300@@ -485,16 +504,16 @@
301 msgstr ""
302
303 #. TRANSLATORS: %2 refers to the total number of find in page results and %1 to the highlighted result
304-#: src/app/webbrowser/AddressBar.qml:212
305+#: src/app/webbrowser/AddressBar.qml:208
306 #, qt-format
307 msgid "%1/%2"
308 msgstr ""
309
310-#: src/app/webbrowser/AddressBar.qml:248
311+#: src/app/webbrowser/AddressBar.qml:244
312 msgid "find in page"
313 msgstr ""
314
315-#: src/app/webbrowser/AddressBar.qml:249
316+#: src/app/webbrowser/AddressBar.qml:245
317 msgid "search or enter an address"
318 msgstr ""
319
320@@ -528,115 +547,94 @@
321 msgstr ""
322
323 #: src/app/webbrowser/BookmarkOptions.qml:153
324-#: src/app/webbrowser/SettingsPage.qml:322
325+#: src/app/webbrowser/SettingsPage.qml:323
326 msgid "Save"
327 msgstr ""
328
329 #: src/app/webbrowser/BookmarksFoldersView.qml:191
330 #: src/app/webbrowser/BookmarksFoldersViewWide.qml:148
331-#: src/app/webbrowser/NewTabView.qml:253 src/app/webbrowser/SettingsPage.qml:85
332-#: src/app/webbrowser/SettingsPage.qml:286
333+#: src/app/webbrowser/NewTabView.qml:253 src/app/webbrowser/SettingsPage.qml:86
334+#: src/app/webbrowser/SettingsPage.qml:287
335 msgid "Homepage"
336 msgstr ""
337
338-#: src/app/webbrowser/BookmarksView.qml:32
339-#: src/app/webbrowser/BookmarksViewWide.qml:32
340-#: src/app/webbrowser/Browser.qml:566 src/app/webbrowser/NewTabView.qml:130
341+#: src/app/webbrowser/BookmarksView.qml:33
342+#: src/app/webbrowser/BookmarksViewWide.qml:33
343+#: src/app/webbrowser/Browser.qml:556 src/app/webbrowser/NewTabView.qml:130
344 #: src/app/webbrowser/NewTabViewWide.qml:139
345 msgid "Bookmarks"
346 msgstr ""
347
348-#: src/app/webbrowser/BookmarksView.qml:76
349-#: src/app/webbrowser/BookmarksViewWide.qml:75
350-#: src/app/webbrowser/Browser.qml:447 src/app/webbrowser/HistoryView.qml:126
351-#: src/app/webbrowser/HistoryViewWide.qml:407
352+#: src/app/webbrowser/BookmarksView.qml:71
353+#: src/app/webbrowser/BookmarksViewWide.qml:70
354+#: src/app/webbrowser/Browser.qml:437 src/app/webbrowser/HistoryView.qml:129
355+#: src/app/webbrowser/HistoryViewWide.qml:419
356 msgid "Done"
357 msgstr ""
358
359-#: src/app/webbrowser/BookmarksView.qml:90
360-#: src/app/webbrowser/BookmarksViewWide.qml:89
361-#: src/app/webbrowser/HistoryView.qml:140
362-#: src/app/webbrowser/HistoryViewWide.qml:421
363+#: src/app/webbrowser/BookmarksView.qml:85
364+#: src/app/webbrowser/BookmarksViewWide.qml:84
365+#: src/app/webbrowser/HistoryView.qml:143
366+#: src/app/webbrowser/HistoryViewWide.qml:433
367 #: src/app/webbrowser/TabsBar.qml:153 src/app/webbrowser/TabsList.qml:99
368 msgid "New tab"
369 msgstr ""
370
371-#: src/app/webbrowser/Browser.qml:572 src/app/webbrowser/HistoryView.qml:30
372-#: src/app/webbrowser/HistoryViewWide.qml:35
373+#: src/app/webbrowser/Browser.qml:562 src/app/webbrowser/HistoryView.qml:31
374+#: src/app/webbrowser/HistoryViewWide.qml:36
375 msgid "History"
376 msgstr ""
377
378-#: src/app/webbrowser/Browser.qml:585 src/app/webbrowser/DownloadsPage.qml:45
379-msgid "Downloads"
380-msgstr ""
381-
382-#: src/app/webbrowser/Browser.qml:592
383+#: src/app/webbrowser/Browser.qml:582
384 msgid "Leave Private Mode"
385 msgstr ""
386
387-#: src/app/webbrowser/Browser.qml:592
388+#: src/app/webbrowser/Browser.qml:582
389 msgid "Private Mode"
390 msgstr ""
391
392-#: src/app/webbrowser/Browser.qml:610 src/app/webbrowser/SettingsPage.qml:41
393+#: src/app/webbrowser/Browser.qml:600 src/app/webbrowser/SettingsPage.qml:42
394 msgid "Settings"
395 msgstr ""
396
397 #. TRANSLATORS: %1 refers to the current number of tabs opened
398-#: src/app/webbrowser/Browser.qml:783 src/app/webbrowser/Browser.qml:821
399+#: src/app/webbrowser/Browser.qml:772 src/app/webbrowser/Browser.qml:810
400 #, qt-format
401 msgid "(%1)"
402 msgstr ""
403
404-#: src/app/webbrowser/Browser.qml:1377
405+#: src/app/webbrowser/Browser.qml:1366
406 msgid "Swipe Up To Exit Full Screen"
407 msgstr ""
408
409-#: src/app/webbrowser/Browser.qml:1378
410+#: src/app/webbrowser/Browser.qml:1367
411 msgid "Press ESC To Exit Full Screen"
412 msgstr ""
413
414 #: src/app/webbrowser/ContentDownloadDialog.qml:83
415+#: src/app/webcontainer/ContentDownloadDialog.qml:83
416 msgid ""
417 "Choose an application to open this file or add it to the downloads folder."
418 msgstr ""
419
420 #: src/app/webbrowser/ContentDownloadDialog.qml:89
421+#: src/app/webcontainer/ContentDownloadDialog.qml:89
422 msgid "Choose an application"
423 msgstr ""
424
425 #: src/app/webbrowser/ContentDownloadDialog.qml:102
426+#: src/app/webcontainer/ContentDownloadDialog.qml:102
427 msgid "Download"
428 msgstr ""
429
430-#: src/app/webbrowser/DownloadDelegate.qml:159
431-msgid "Download failed"
432-msgstr ""
433-
434-#: src/app/webbrowser/DownloadDelegate.qml:208
435-msgid "Resume"
436-msgstr ""
437-
438-#: src/app/webbrowser/DownloadsPage.qml:59
439-msgid "Confirm selection"
440-msgstr ""
441-
442-#: src/app/webbrowser/DownloadsPage.qml:99
443-msgid "Delete"
444-msgstr ""
445-
446-#: src/app/webbrowser/DownloadsPage.qml:252
447-msgid "No downloads available"
448-msgstr ""
449-
450-#: src/app/webbrowser/ExpandedHistoryView.qml:117
451+#: src/app/webbrowser/ExpandedHistoryView.qml:119
452 #, qt-format
453 msgid "%1 page"
454 msgid_plural "%1 pages"
455 msgstr[0] ""
456 msgstr[1] ""
457
458-#: src/app/webbrowser/ExpandedHistoryView.qml:132
459+#: src/app/webbrowser/ExpandedHistoryView.qml:134
460 #: src/app/webbrowser/NewTabView.qml:143
461 msgid "Less"
462 msgstr ""
463@@ -646,20 +644,20 @@
464 msgstr ""
465
466 #: src/app/webbrowser/HistorySectionDelegate.qml:48
467-#: src/app/webbrowser/HistoryViewWide.qml:251
468+#: src/app/webbrowser/HistoryViewWide.qml:252
469 msgid "Yesterday"
470 msgstr ""
471
472-#: src/app/webbrowser/HistoryViewWide.qml:160
473+#: src/app/webbrowser/HistoryViewWide.qml:161
474 msgid "search history"
475 msgstr ""
476
477-#: src/app/webbrowser/HistoryViewWide.qml:235
478+#: src/app/webbrowser/HistoryViewWide.qml:236
479 msgid "All History"
480 msgstr ""
481
482-#: src/app/webbrowser/HistoryViewWide.qml:249
483-#: src/app/webbrowser/HistoryViewWide.qml:336
484+#: src/app/webbrowser/HistoryViewWide.qml:250
485+#: src/app/webbrowser/HistoryViewWide.qml:348
486 msgid "Today"
487 msgstr ""
488
489@@ -681,12 +679,12 @@
490 msgid "More"
491 msgstr ""
492
493-#: src/app/webbrowser/NewTabView.qml:326
494+#: src/app/webbrowser/NewTabView.qml:328
495 #: src/app/webbrowser/NewTabViewWide.qml:138
496 msgid "Top sites"
497 msgstr ""
498
499-#: src/app/webbrowser/NewTabView.qml:357
500+#: src/app/webbrowser/NewTabView.qml:359
501 msgid "You haven't visited any site yet"
502 msgstr ""
503
504@@ -766,54 +764,54 @@
505 msgid "Default"
506 msgstr ""
507
508-#: src/app/webbrowser/SettingsPage.qml:70
509-#: src/app/webbrowser/SettingsPage.qml:150
510+#: src/app/webbrowser/SettingsPage.qml:71
511+#: src/app/webbrowser/SettingsPage.qml:151
512 msgid "Search engine"
513 msgstr ""
514
515-#: src/app/webbrowser/SettingsPage.qml:96
516+#: src/app/webbrowser/SettingsPage.qml:97
517 msgid "Restore previous session at startup"
518 msgstr ""
519
520-#: src/app/webbrowser/SettingsPage.qml:115
521-#: src/app/webbrowser/SettingsPage.qml:193
522+#: src/app/webbrowser/SettingsPage.qml:116
523+#: src/app/webbrowser/SettingsPage.qml:194
524 msgid "Privacy & permissions"
525 msgstr ""
526
527-#: src/app/webbrowser/SettingsPage.qml:126
528+#: src/app/webbrowser/SettingsPage.qml:127
529 msgid "Reset browser settings"
530 msgstr ""
531
532-#: src/app/webbrowser/SettingsPage.qml:206
533-#: src/app/webbrowser/SettingsPage.qml:342
534+#: src/app/webbrowser/SettingsPage.qml:207
535+#: src/app/webbrowser/SettingsPage.qml:343
536 msgid "Camera & microphone"
537 msgstr ""
538
539-#: src/app/webbrowser/SettingsPage.qml:215
540+#: src/app/webbrowser/SettingsPage.qml:216
541 msgid "Clear Browsing History"
542 msgstr ""
543
544-#: src/app/webbrowser/SettingsPage.qml:219
545+#: src/app/webbrowser/SettingsPage.qml:220
546 msgid "Clear Browsing History?"
547 msgstr ""
548
549-#: src/app/webbrowser/SettingsPage.qml:227
550+#: src/app/webbrowser/SettingsPage.qml:228
551 msgid "Clear Cache"
552 msgstr ""
553
554-#: src/app/webbrowser/SettingsPage.qml:230
555+#: src/app/webbrowser/SettingsPage.qml:231
556 msgid "Clear Cache?"
557 msgstr ""
558
559-#: src/app/webbrowser/SettingsPage.qml:265
560+#: src/app/webbrowser/SettingsPage.qml:266
561 msgid "Clear"
562 msgstr ""
563
564-#: src/app/webbrowser/SettingsPage.qml:354
565+#: src/app/webbrowser/SettingsPage.qml:355
566 msgid "Microphone"
567 msgstr ""
568
569-#: src/app/webbrowser/SettingsPage.qml:375
570+#: src/app/webbrowser/SettingsPage.qml:376
571 msgid "Camera"
572 msgstr ""
573
574@@ -825,19 +823,19 @@
575 msgid "Close Tab"
576 msgstr ""
577
578-#: src/app/webbrowser/UrlPreviewDelegate.qml:137
579+#: src/app/webbrowser/UrlPreviewDelegate.qml:135
580 msgid "Remove"
581 msgstr ""
582
583 #. TRANSLATORS: %1 refers to the current page’s title
584 #: src/app/webbrowser/webbrowser-app.qml:35
585-#: src/app/webcontainer/webapp-container.qml:70
586+#: src/app/webcontainer/webapp-container.qml:69
587 #, qt-format
588 msgid "%1 - Ubuntu Web Browser"
589 msgstr ""
590
591 #: src/app/webbrowser/webbrowser-app.qml:37
592-#: src/app/webcontainer/webapp-container.qml:72
593+#: src/app/webcontainer/webapp-container.qml:71
594 msgid "Ubuntu Web Browser"
595 msgstr ""
596
597@@ -869,10 +867,6 @@
598 "time; please try again after closing all other account windows."
599 msgstr ""
600
601-#: src/app/webcontainer/AccountsLogic.qml:214
602-msgid "Authentication failed"
603-msgstr ""
604-
605 #. TRANSLATORS: %1 refers to the application name, %2 refers to the account provider
606 #: src/app/webcontainer/AccountsSplashScreen.qml:45
607 #, qt-format
608
609=== renamed file 'src/app/webbrowser/BrowserPage.qml' => 'src/app/BrowserPage.qml'
610=== modified file 'src/app/CMakeLists.txt'
611--- src/app/CMakeLists.txt 2016-04-12 19:59:00 +0000
612+++ src/app/CMakeLists.txt 2016-09-01 14:43:39 +0000
613@@ -21,6 +21,7 @@
614
615 set(COMMONLIB_SRC
616 browserapplication.cpp
617+ downloads-model.cpp
618 favicon-fetcher.cpp
619 meminfo.cpp
620 mime-database.cpp
621
622=== renamed file 'src/app/webbrowser/DownloadDelegate.qml' => 'src/app/DownloadDelegate.qml'
623--- src/app/webbrowser/DownloadDelegate.qml 2016-05-23 02:52:50 +0000
624+++ src/app/DownloadDelegate.qml 2016-09-01 14:43:39 +0000
625@@ -18,7 +18,6 @@
626
627 import QtQuick 2.4
628 import Ubuntu.Components 1.3
629-import ".."
630
631 ListItem {
632 id: downloadDelegate
633
634=== renamed file 'src/app/webbrowser/DownloadHandler.qml' => 'src/app/DownloadHandler.qml'
635--- src/app/webbrowser/DownloadHandler.qml 2016-01-12 11:06:49 +0000
636+++ src/app/DownloadHandler.qml 2016-09-01 14:43:39 +0000
637@@ -18,7 +18,7 @@
638
639 import QtQuick 2.4
640 import Ubuntu.DownloadManager 1.2
641-import webbrowserapp.private 0.1
642+import webbrowsercommon.private 0.2
643
644 DownloadManager {
645 onDownloadFinished: {
646
647=== renamed file 'src/app/webbrowser/DownloadsPage.qml' => 'src/app/DownloadsPage.qml'
648--- src/app/webbrowser/DownloadsPage.qml 2016-06-06 09:09:47 +0000
649+++ src/app/DownloadsPage.qml 2016-09-01 14:43:39 +0000
650@@ -19,10 +19,9 @@
651 import QtQuick 2.4
652 import Ubuntu.Components 1.3
653 import Ubuntu.Content 1.3
654-import webbrowserapp.private 0.1
655-import webbrowsercommon.private 0.1
656+import webbrowsercommon.private 0.2
657
658-import "../MimeTypeMapper.js" as MimeTypeMapper
659+import "MimeTypeMapper.js" as MimeTypeMapper
660
661 BrowserPage {
662 id: downloadsItem
663
664=== renamed file 'src/app/webbrowser/IndeterminateProgressBar.qml' => 'src/app/IndeterminateProgressBar.qml'
665=== modified file 'src/app/browserapplication.cpp'
666--- src/app/browserapplication.cpp 2016-06-16 13:30:01 +0000
667+++ src/app/browserapplication.cpp 2016-09-01 14:43:39 +0000
668@@ -35,6 +35,7 @@
669 // local
670 #include "browserapplication.h"
671 #include "config.h"
672+#include "downloads-model.h"
673 #include "favicon-fetcher.h"
674 #include "meminfo.h"
675 #include "mime-database.h"
676@@ -102,6 +103,7 @@
677 return new type(); \
678 }
679
680+MAKE_SINGLETON_FACTORY(DownloadsModel)
681 MAKE_SINGLETON_FACTORY(MemInfo)
682 MAKE_SINGLETON_FACTORY(MimeDatabase)
683
684@@ -185,6 +187,10 @@
685 qmlRegisterSingletonType<MimeDatabase>(uri, 0, 1, "MimeDatabase", MimeDatabase_singleton_factory);
686 qmlRegisterType<SessionStorage>(uri, 0, 1, "SessionStorage");
687 qmlRegisterType<QQuickShortcut>(uri, 0, 1, "Shortcut");
688+ qmlRegisterSingletonType<DownloadsModel>(
689+ uri, 0, 2,
690+ "DownloadsModel",
691+ DownloadsModel_singleton_factory);
692
693 const char* inputInfoUri = "Unity.InputInfo";
694 qmlRegisterType<QDeclarativeInputDeviceModel>(inputInfoUri, 0, 1, "InputDeviceModel");
695
696=== renamed file 'src/app/webbrowser/downloads-model.cpp' => 'src/app/downloads-model.cpp'
697=== renamed file 'src/app/webbrowser/downloads-model.h' => 'src/app/downloads-model.h'
698=== modified file 'src/app/single-instance-manager.cpp'
699--- src/app/single-instance-manager.cpp 2016-07-29 14:29:07 +0000
700+++ src/app/single-instance-manager.cpp 2016-09-01 14:43:39 +0000
701@@ -123,6 +123,11 @@
702 SLOT(onNewInstanceConnected()));
703 return true;
704 }
705+
706+ if (m_server.serverError() == QAbstractSocket::HostNotFoundError) {
707+
708+ }
709+
710 return false;
711 }
712
713
714=== modified file 'src/app/webbrowser/BookmarksView.qml'
715--- src/app/webbrowser/BookmarksView.qml 2016-05-23 08:56:38 +0000
716+++ src/app/webbrowser/BookmarksView.qml 2016-09-01 14:43:39 +0000
717@@ -20,6 +20,7 @@
718 import Ubuntu.Components 1.3
719 import webbrowserapp.private 0.1
720 import "." as Local
721+import ".."
722
723 BrowserPage {
724 id: bookmarksView
725
726=== modified file 'src/app/webbrowser/BookmarksViewWide.qml'
727--- src/app/webbrowser/BookmarksViewWide.qml 2016-05-23 08:56:38 +0000
728+++ src/app/webbrowser/BookmarksViewWide.qml 2016-09-01 14:43:39 +0000
729@@ -20,6 +20,7 @@
730 import Ubuntu.Components 1.3
731 import webbrowserapp.private 0.1
732 import "." as Local
733+import ".."
734
735 BrowserPage {
736 id: bookmarksViewWide
737
738=== modified file 'src/app/webbrowser/Browser.qml'
739--- src/app/webbrowser/Browser.qml 2016-07-01 08:52:37 +0000
740+++ src/app/webbrowser/Browser.qml 2016-09-01 14:43:39 +0000
741@@ -25,7 +25,7 @@
742 import Ubuntu.Components.Popups 1.3
743 import Unity.InputInfo 0.1
744 import webbrowserapp.private 0.1
745-import webbrowsercommon.private 0.1
746+import webbrowsercommon.private 0.2
747 import "../actions" as Actions
748 import "../UrlUtils.js" as UrlUtils
749 import ".."
750@@ -988,7 +988,7 @@
751
752 anchors.fill: parent
753 active: false
754- source: "DownloadsPage.qml"
755+ source: "../DownloadsPage.qml"
756
757 Binding {
758 target: downloadsViewLoader.item
759@@ -1041,7 +1041,7 @@
760
761 Loader {
762 id: downloadHandlerLoader
763- source: "DownloadHandler.qml"
764+ source: "../DownloadHandler.qml"
765 asynchronous: true
766 }
767
768
769=== modified file 'src/app/webbrowser/CMakeLists.txt'
770--- src/app/webbrowser/CMakeLists.txt 2015-12-10 09:06:06 +0000
771+++ src/app/webbrowser/CMakeLists.txt 2016-09-01 14:43:39 +0000
772@@ -13,7 +13,6 @@
773 bookmarks-model.cpp
774 bookmarks-folder-model.cpp
775 bookmarks-folderlist-model.cpp
776- downloads-model.cpp
777 history-domain-model.cpp
778 history-domainlist-model.cpp
779 history-lastvisitdatelist-model.cpp
780
781=== modified file 'src/app/webbrowser/HistoryView.qml'
782--- src/app/webbrowser/HistoryView.qml 2016-06-06 09:09:47 +0000
783+++ src/app/webbrowser/HistoryView.qml 2016-09-01 14:43:39 +0000
784@@ -20,6 +20,7 @@
785 import Ubuntu.Components 1.3
786 import webbrowserapp.private 0.1
787 import "." as Local
788+import ".."
789
790 BrowserPage {
791 id: historyView
792
793=== modified file 'src/app/webbrowser/HistoryViewWide.qml'
794--- src/app/webbrowser/HistoryViewWide.qml 2016-08-25 09:51:33 +0000
795+++ src/app/webbrowser/HistoryViewWide.qml 2016-09-01 14:43:39 +0000
796@@ -21,6 +21,7 @@
797 import webbrowserapp.private 0.1
798 import "Highlight.js" as Highlight
799 import "." as Local
800+import ".."
801
802 BrowserPage {
803 id: historyViewWide
804
805=== modified file 'src/app/webbrowser/SettingsPage.qml'
806--- src/app/webbrowser/SettingsPage.qml 2016-08-25 09:51:33 +0000
807+++ src/app/webbrowser/SettingsPage.qml 2016-09-01 14:43:39 +0000
808@@ -23,6 +23,7 @@
809 import Ubuntu.Web 0.2
810 import webbrowserapp.private 0.1
811
812+import ".."
813 import "../UrlUtils.js" as UrlUtils
814
815 FocusScope {
816
817=== modified file 'src/app/webbrowser/webbrowser-app.cpp'
818--- src/app/webbrowser/webbrowser-app.cpp 2016-05-09 22:51:50 +0000
819+++ src/app/webbrowser/webbrowser-app.cpp 2016-09-01 14:43:39 +0000
820@@ -20,7 +20,6 @@
821 #include "bookmarks-folderlist-model.h"
822 #include "cache-deleter.h"
823 #include "config.h"
824-#include "downloads-model.h"
825 #include "file-operations.h"
826 #include "history-domainlist-model.h"
827 #include "history-lastvisitdatelist-model.h"
828@@ -31,6 +30,8 @@
829 #include "tabs-model.h"
830 #include "webbrowser-app.h"
831
832+#include "../downloads-model.h"
833+
834 // Qt
835 #include <QtCore/QCoreApplication>
836 #include <QtCore/QDebug>
837
838=== modified file 'src/app/webcontainer/ContentDownloadDialog.qml'
839--- src/app/webcontainer/ContentDownloadDialog.qml 2016-02-29 15:18:40 +0000
840+++ src/app/webcontainer/ContentDownloadDialog.qml 2016-09-01 14:43:39 +0000
841@@ -1,5 +1,5 @@
842 /*
843- * Copyright 2014-2015 Canonical Ltd.
844+ * Copyright 2014-2016 Canonical Ltd.
845 *
846 * This file is part of webbrowser-app.
847 *
848@@ -29,40 +29,130 @@
849 objectName: "downloadDialog"
850 anchors.fill: parent
851 property var activeTransfer
852- property var downloadId
853+ property string downloadId
854 property var singleDownload
855- property var mimeType
856- property var filename
857- property var icon: MimeDatabase.iconForMimetype(mimeType)
858+ property string mimeType
859+ property string filename
860+ property string icon: MimeDatabase.iconForMimetype(mimeType)
861 property alias contentType: peerPicker.contentType
862-
863+
864+ signal startDownload(string downloadId, var download, string mimeType)
865+
866+ Component {
867+ id: downloadOptionsComponent
868+ Dialog {
869+ id: downloadOptionsDialog
870+ objectName: "downloadOptionsDialog"
871+ Column {
872+ spacing: units.gu(2)
873+
874+ Item {
875+ width: parent.width
876+ height: mimetypeIcon.height
877+
878+ Icon {
879+ id: mimetypeIcon
880+ name: icon != "" ? icon : "save"
881+ height: units.gu(4.5)
882+ width: height
883+ }
884+
885+ Label {
886+ id: filenameLabel
887+ anchors.top: mimetypeIcon.top
888+ anchors.left: mimetypeIcon.right
889+ anchors.leftMargin: units.gu(2)
890+ anchors.right: parent.right
891+ anchors.rightMargin: units.gu(2)
892+ elide: Text.ElideMiddle
893+ text: downloadDialog.filename
894+ }
895+
896+ Label {
897+ anchors.top: filenameLabel.bottom
898+ anchors.left: filenameLabel.left
899+ anchors.right: filenameLabel.right
900+ elide: Text.ElideRight
901+ font.capitalization: Font.Capitalize
902+ text: MimeDatabase.nameForMimetype(downloadDialog.mimeType)
903+ }
904+ }
905+
906+ Label {
907+ width: parent.width
908+ text: i18n.tr("Choose an application to open this file or add it to the downloads folder.")
909+ wrapMode: Text.Wrap
910+ visible: peerModel.peers.length > 0
911+ }
912+
913+ Button {
914+ text: i18n.tr("Choose an application")
915+ objectName: "chooseAppButton"
916+ anchors.horizontalCenter: parent.horizontalCenter
917+ width: units.gu(22)
918+ height: units.gu(4)
919+ visible: peerModel.peers.length > 0
920+ onClicked: {
921+ PopupUtils.close(downloadOptionsDialog)
922+ pickerRect.visible = true
923+ }
924+ }
925+
926+ Button {
927+ text: i18n.tr("Download")
928+ objectName: "downloadFileButton"
929+ anchors.horizontalCenter: parent.horizontalCenter
930+ width: units.gu(22)
931+ height: units.gu(4)
932+ onClicked: {
933+ startDownload(downloadId, singleDownload, mimeType)
934+ PopupUtils.close(downloadDialog)
935+ }
936+ }
937+
938+ Button {
939+ text: i18n.tr("Cancel")
940+ objectName: "cancelDownloadButton"
941+ anchors.horizontalCenter: parent.horizontalCenter
942+ width: units.gu(22)
943+ height: units.gu(4)
944+ onClicked: PopupUtils.close(downloadDialog)
945+ }
946+ }
947+ }
948+ }
949+
950 ContentPeerModel {
951 id: peerModel
952 handler: ContentHandler.Destination
953 contentType: downloadDialog.contentType
954 }
955-
956+
957 Rectangle {
958 id: pickerRect
959 anchors.fill: parent
960- visible: true
961+ visible: false
962 ContentPeerPicker {
963 id: peerPicker
964 handler: ContentHandler.Destination
965 objectName: "contentPeerPicker"
966 visible: parent.visible
967-
968+
969 onPeerSelected: {
970 activeTransfer = peer.request()
971 activeTransfer.downloadId = downloadDialog.downloadId
972 activeTransfer.state = ContentTransfer.Downloading
973 PopupUtils.close(downloadDialog)
974 }
975-
976+
977 onCancelPressed: {
978 PopupUtils.close(downloadDialog)
979 }
980 }
981 }
982+
983+ Component.onCompleted: {
984+ PopupUtils.open(downloadOptionsComponent, downloadDialog)
985+ }
986 }
987 }
988
989=== modified file 'src/app/webcontainer/PopupWindowController.qml'
990--- src/app/webcontainer/PopupWindowController.qml 2016-03-24 14:06:22 +0000
991+++ src/app/webcontainer/PopupWindowController.qml 2016-09-01 14:43:39 +0000
992@@ -36,11 +36,26 @@
993 signal openExternalUrlTriggered(string url)
994 signal newViewCreated(string url)
995 signal windowOverlayOpenAnimationDone()
996+ signal showDownloadDialog(string downloadId, var contentType, var downloader, string filename, string mimeType)
997
998 signal initializeOverlayViewsWithUrls(var urls)
999
1000 readonly property int maxSimultaneousViews: 3
1001
1002+ Component.onCompleted: {
1003+ if (webviewOverlayUrlsSettings.overlayUrls
1004+ && webviewOverlayUrlsSettings.overlayUrls.length > 0) {
1005+ try {
1006+ var urls = JSON.parse(webviewOverlayUrlsSettings.overlayUrls)
1007+ if (typeof(urls) === 'object'
1008+ && urls.length != undefined
1009+ && urls.length > 0) {
1010+ initializeOverlayViewsWithUrls(urls)
1011+ }
1012+ } catch (e) {}
1013+ }
1014+ }
1015+
1016 Settings {
1017 id: webviewOverlayUrlsSettings
1018 property string overlayUrls
1019@@ -76,20 +91,6 @@
1020 }
1021 }
1022
1023- Component.onCompleted: {
1024- if (webviewOverlayUrlsSettings.overlayUrls
1025- && webviewOverlayUrlsSettings.overlayUrls.length > 0) {
1026- try {
1027- var urls = JSON.parse(webviewOverlayUrlsSettings.overlayUrls)
1028- if (typeof(urls) === 'object'
1029- && urls.length != undefined
1030- && urls.length > 0) {
1031- initializeOverlayViewsWithUrls(urls)
1032- }
1033- } catch (e) {}
1034- }
1035- }
1036-
1037 function openUrlExternally(url) {
1038 if (!blockOpenExternalUrls) {
1039 Qt.openUrlExternally(url)
1040@@ -239,7 +240,11 @@
1041 windowOverlayOpenAnimationDone()
1042 }
1043 }
1044-
1045+
1046+ onShowDownloadDialog: controller.showDownloadDialog(
1047+ downloadId,contentType,
1048+ downloader, filename, mimeType)
1049+
1050 Behavior on y {
1051 NumberAnimation {
1052 duration: 500
1053
1054=== modified file 'src/app/webcontainer/PopupWindowOverlay.qml'
1055--- src/app/webcontainer/PopupWindowOverlay.qml 2016-06-17 17:39:58 +0000
1056+++ src/app/webcontainer/PopupWindowOverlay.qml 2016-09-01 14:43:39 +0000
1057@@ -35,6 +35,9 @@
1058 property alias wide: popupWebview.wide
1059
1060 signal webviewUrlChanged(url webviewUrl)
1061+ signal showDownloadDialog(string downloadId, var contentType, var downloader, string filename, string mimeType)
1062+
1063+ focus: true
1064
1065 focus: true
1066
1067@@ -210,6 +213,10 @@
1068 disposition === Oxide.NavigationRequest.DispositionNewForegroundTab;
1069 }
1070
1071+ onShowDownloadDialog: popup.showDownloadDialog(
1072+ downloadId, contentType,
1073+ downloader, filename, mimeType)
1074+
1075 onNavigationRequested: {
1076 var url = request.url.toString()
1077 request.action = Oxide.NavigationRequest.ActionAccept
1078
1079=== modified file 'src/app/webcontainer/WebApp.qml'
1080--- src/app/webcontainer/WebApp.qml 2016-08-03 09:28:48 +0000
1081+++ src/app/webcontainer/WebApp.qml 2016-09-01 14:43:39 +0000
1082@@ -23,6 +23,10 @@
1083 import Ubuntu.Unity.Action 1.1 as UnityActions
1084 import Ubuntu.UnityWebApps 0.1 as UnityWebApps
1085 import Qt.labs.settings 1.0
1086+import Ubuntu.Components.Popups 1.3
1087+import Unity.InputInfo 0.1
1088+import webbrowsercommon.private 0.2
1089+
1090 import "../actions" as Actions
1091 import ".."
1092 import "ColorUtils.js" as ColorUtils
1093@@ -56,6 +60,9 @@
1094 readonly property bool chromeless: !chromeVisible && !backForwardButtonsVisible && !accountSwitcher
1095 readonly property real themeColorTextContrastFactor: 3.0
1096
1097+ readonly property bool hasMouse: (miceModel.count + touchPadModel.count) > 0
1098+ readonly property bool hasTouchScreen: touchScreenModel.count > 0
1099+
1100 signal chooseAccount()
1101
1102 // Used for testing. There is a bug that currently prevents non visual Qt objects
1103@@ -63,6 +70,21 @@
1104 // not possible https://bugs.launchpad.net/autopilot-qt/+bug/1273956
1105 property alias generatedUrlPatterns: urlPatternSettings.generatedUrlPatterns
1106
1107+ InputDeviceModel {
1108+ id: miceModel
1109+ deviceFilter: InputInfo.Mouse
1110+ }
1111+
1112+ InputDeviceModel {
1113+ id: touchPadModel
1114+ deviceFilter: InputInfo.TouchPad
1115+ }
1116+
1117+ InputDeviceModel {
1118+ id: touchScreenModel
1119+ deviceFilter: InputInfo.TouchScreen
1120+ }
1121+
1122 currentWebcontext: currentWebview ? currentWebview.context : null
1123
1124 actions: [
1125@@ -274,6 +296,156 @@
1126 }
1127 }
1128
1129+ readonly property var downloadManager: (downloadHandlerLoader.status == Loader.Ready) ? downloadHandlerLoader.item : null
1130+
1131+ Loader {
1132+ id: downloadHandlerLoader
1133+ source: "../DownloadHandler.qml"
1134+ asynchronous: true
1135+ }
1136+
1137+ Component.onCompleted: {
1138+ DownloadsModel.databasePath = dataLocation + "/downloads.sqlite"
1139+ }
1140+
1141+ // Until a proper workaround landed in the UbuntuSDK:
1142+ // https://bugs.launchpad.net/bugs/1536669
1143+ onHasMouseChanged: QuickUtils.mouseAttached = hasMouse
1144+
1145+ BottomEdge {
1146+ id: bottomEdge
1147+ height: parent.height
1148+
1149+ hint.text: "Downloads"
1150+
1151+ contentComponent: DownloadsPage {
1152+ header: PageHeader {
1153+ title: i18n.tr("Downloads")
1154+ }
1155+
1156+ width: webapp.width
1157+ height: webapp.height
1158+
1159+ downloadManager: webapp.downloadManager
1160+ }
1161+ }
1162+
1163+ Loader {
1164+ id: contentHandlerLoader
1165+ source: "../ContentHandler.qml"
1166+ asynchronous: true
1167+ }
1168+
1169+ QtObject {
1170+ id: internal
1171+
1172+ function instantiateShareComponent() {
1173+ var component = Qt.createComponent("../Share.qml")
1174+ if (component.status === Component.Ready) {
1175+ var share = component.createObject(webappWebview)
1176+ share.onDone.connect(share.destroy)
1177+ return share
1178+ }
1179+ return null
1180+ }
1181+
1182+ function shareLink(url, title) {
1183+ var share = instantiateShareComponent()
1184+ if (share) share.shareLink(url, title)
1185+ }
1186+
1187+ function shareText(text) {
1188+ var share = instantiateShareComponent()
1189+ if (share) share.shareText(text)
1190+ }
1191+ }
1192+
1193+ Connections {
1194+ target: containerWebView
1195+ onShowDownloadDialog: {
1196+ if (downloadDialogLoader.status === Loader.Ready) {
1197+// bottomEdge.commit()
1198+
1199+ var downloadDialog =
1200+ PopupUtils.open(downloadDialogLoader.item,
1201+ webapp,
1202+ {"contentType" : contentType,
1203+ "downloadId" : downloadId,
1204+ "singleDownload" : downloader,
1205+ "filename" : filename,
1206+ "mimeType" : mimeType})
1207+ downloadDialog.startDownload.connect(startDownload)
1208+ }
1209+ }
1210+ }
1211+
1212+ function startDownload(downloadId, download, mimeType) {
1213+ DownloadsModel.add(downloadId, download.url, mimeType)
1214+ download.start()
1215+ downloadsViewLoader.active = true
1216+ }
1217+
1218+ function showDownloadsPage() {
1219+ downloadsViewLoader.active = true
1220+ return downloadsViewLoader.item
1221+ }
1222+
1223+ Loader {
1224+ id: downloadDialogLoader
1225+ source: "ContentDownloadDialog.qml"
1226+ asynchronous: true
1227+ }
1228+
1229+ Loader {
1230+ id: filePickerLoader
1231+ source: "ContentPickerDialog.qml"
1232+ asynchronous: true
1233+ }
1234+
1235+ Loader {
1236+ id: downloadsViewLoader
1237+
1238+ anchors.fill: parent
1239+ active: false
1240+ source: "../DownloadsPage.qml"
1241+
1242+ Binding {
1243+ target: downloadsViewLoader.item
1244+ property: "downloadManager"
1245+ value: webapp.downloadManager
1246+ }
1247+ Binding {
1248+ target: downloadsViewLoader.item
1249+ property: "focus"
1250+ value: true
1251+ }
1252+ Connections {
1253+ target: downloadsViewLoader.item
1254+ onDone: downloadsViewLoader.active = false
1255+ }
1256+
1257+ onStatusChanged: {
1258+ if (status == Loader.Ready) {
1259+ forceActiveFocus()
1260+ } else {
1261+ internal.resetFocus()
1262+ }
1263+ }
1264+ }
1265+
1266+ Connections {
1267+ target: contentHandlerLoader.item
1268+ onExportFromDownloads: {
1269+ if (downloadHandlerLoader.status == Loader.Ready) {
1270+ downloadsViewLoader.active = true
1271+ downloadsViewLoader.item.mimetypeFilter = mimetypeFilter
1272+ downloadsViewLoader.item.activeTransfer = transfer
1273+ downloadsViewLoader.item.multiSelect = multiSelect
1274+ downloadsViewLoader.item.pickingMode = true
1275+ }
1276+ }
1277+ }
1278+
1279 UnityWebApps.UnityWebApps {
1280 id: unityWebapps
1281 name: webappName
1282
1283=== modified file 'src/app/webcontainer/WebappContainerWebview.qml'
1284--- src/app/webcontainer/WebappContainerWebview.qml 2016-07-13 16:23:18 +0000
1285+++ src/app/webcontainer/WebappContainerWebview.qml 2016-09-01 14:43:39 +0000
1286@@ -20,6 +20,7 @@
1287 import Ubuntu.Components 1.3
1288 import Ubuntu.Unity.Action 1.1 as UnityActions
1289 import Ubuntu.UnityWebApps 0.1 as UnityWebApps
1290+import webbrowsercommon.private 0.2
1291 import "../actions" as Actions
1292 import ".."
1293
1294@@ -45,6 +46,7 @@
1295
1296 signal samlRequestUrlPatternReceived(string urlPattern)
1297 signal themeColorMetaInformationDetected(string theme_color)
1298+ signal showDownloadDialog(string downloadId, var contentType, var downloader, string filename, string mimeType)
1299
1300 onWideChanged: {
1301 if (webappContainerWebViewLoader.item
1302@@ -77,7 +79,11 @@
1303 }
1304 }
1305 }
1306-
1307+ onShowDownloadDialog: {
1308+ containerWebview.showDownloadDialog(
1309+ downloadId, contentType,
1310+ downloader, filename, mimeType)
1311+ }
1312 }
1313
1314 Connections {
1315@@ -85,13 +91,14 @@
1316 onSamlRequestUrlPatternReceived: {
1317 samlRequestUrlPatternReceived(urlPattern)
1318 }
1319- }
1320-
1321- Connections {
1322- target: webappContainerWebViewLoader.item
1323 onThemeColorMetaInformationDetected: {
1324 themeColorMetaInformationDetected(theme_color)
1325 }
1326+ onShowDownloadDialog: {
1327+ containerWebview.showDownloadDialog(
1328+ downloadId, contentType,
1329+ downloader, filename, mimeType)
1330+ }
1331 }
1332
1333 Loader {
1334
1335=== modified file 'src/app/webcontainer/WebappWebview.qml'
1336--- src/app/webcontainer/WebappWebview.qml 2016-03-16 15:17:34 +0000
1337+++ src/app/webcontainer/WebappWebview.qml 2016-09-01 14:43:39 +0000
1338@@ -21,6 +21,8 @@
1339 import Ubuntu.Components 1.3
1340 import Ubuntu.Components.Popups 1.3
1341 import Ubuntu.Web 0.2
1342+import webbrowsercommon.private 0.2
1343+
1344 import "../actions" as Actions
1345 import ".."
1346
1347@@ -30,7 +32,6 @@
1348 property bool wide: false
1349
1350 signal openUrlExternallyRequested(string url)
1351-
1352 filePicker: filePickerLoader.item
1353
1354 property QtObject contextModel: null
1355@@ -50,6 +51,7 @@
1356 onTriggered: contextModel.saveLink()
1357 objectName: "SaveLinkContextualAction"
1358 }
1359+ /*
1360 Actions.Share {
1361 objectName: "ShareContextualAction"
1362 enabled: (contentHandlerLoader.status == Loader.Ready) && contextModel &&
1363@@ -61,7 +63,7 @@
1364 internal.shareText(contextModel.selectionText)
1365 }
1366 }
1367- }
1368+ }*/
1369 Actions.CopyImage {
1370 enabled: contextModel &&
1371 (contextModel.mediaType === Oxide.WebView.MediaTypeImage) &&
1372@@ -175,60 +177,4 @@
1373 requestGeolocationPermission(request)
1374 }
1375 }
1376-
1377- Loader {
1378- id: contentHandlerLoader
1379- source: "../ContentHandler.qml"
1380- asynchronous: true
1381- }
1382-
1383- QtObject {
1384- id: internal
1385-
1386- function instantiateShareComponent() {
1387- var component = Qt.createComponent("../Share.qml")
1388- if (component.status === Component.Ready) {
1389- var share = component.createObject(webappWebview)
1390- share.onDone.connect(share.destroy)
1391- return share
1392- }
1393- return null
1394- }
1395-
1396- function shareLink(url, title) {
1397- var share = instantiateShareComponent()
1398- if (share) share.shareLink(url, title)
1399- }
1400-
1401- function shareText(text) {
1402- var share = instantiateShareComponent()
1403- if (share) share.shareText(text)
1404- }
1405- }
1406-
1407- onShowDownloadDialog: {
1408- if (downloadDialogLoader.status === Loader.Ready) {
1409- var downloadDialog =
1410- PopupUtils.open(downloadDialogLoader.item,
1411- webappWebview,
1412- {"contentType" : contentType,
1413- "downloadId" : downloadId,
1414- "singleDownload" : downloader,
1415- "filename" : filename,
1416- "mimeType" : mimeType})
1417- downloadDialog.startDownload.connect(startDownload)
1418- }
1419- }
1420-
1421- Loader {
1422- id: downloadDialogLoader
1423- source: "ContentDownloadDialog.qml"
1424- asynchronous: true
1425- }
1426-
1427- Loader {
1428- id: filePickerLoader
1429- source: "ContentPickerDialog.qml"
1430- asynchronous: true
1431- }
1432 }
1433
1434=== modified file 'src/app/webcontainer/webapp-container.cpp'
1435--- src/app/webcontainer/webapp-container.cpp 2016-06-20 15:07:52 +0000
1436+++ src/app/webcontainer/webapp-container.cpp 2016-09-01 14:43:39 +0000
1437@@ -27,7 +27,6 @@
1438 #include "url-pattern-utils.h"
1439 #include "webapp-container-helper.h"
1440
1441-
1442 // Qt
1443 #include <QtCore/QCoreApplication>
1444 #include <QtCore/QDebug>
1445@@ -79,7 +78,6 @@
1446 const QString WebappContainer::URL_PATTERN_SEPARATOR = ",";
1447 const QString WebappContainer::LOCAL_SCHEME_FILTER_FILENAME = "local-scheme-filter.js";
1448
1449-
1450 WebappContainer::WebappContainer(int& argc, char** argv):
1451 BrowserApplication(argc, argv),
1452 m_accountSwitcher(false),
1453@@ -88,9 +86,7 @@
1454 m_addressBarVisible(false),
1455 m_localWebappManifest(false),
1456 m_openExternalUrlInOverlay(false),
1457- m_webappContainerHelper(new WebappContainerHelper())
1458-{
1459-}
1460+ m_webappContainerHelper(new WebappContainerHelper()) {}
1461
1462 QString WebappContainer::appId() const
1463 {
1464@@ -123,7 +119,6 @@
1465 if (BrowserApplication::initialize(
1466 "webcontainer/webapp-container.qml",
1467 QString::fromUtf8(qgetenv("APP_ID")))) {
1468-
1469 parseCommandLine();
1470 parseExtraConfiguration();
1471
1472
1473=== modified file 'tests/unittests/downloads-model/CMakeLists.txt'
1474--- tests/unittests/downloads-model/CMakeLists.txt 2015-12-11 13:38:52 +0000
1475+++ tests/unittests/downloads-model/CMakeLists.txt 2016-09-01 14:43:39 +0000
1476@@ -2,8 +2,8 @@
1477 find_package(Qt5Sql REQUIRED)
1478 find_package(Qt5Test REQUIRED)
1479 set(TEST tst_DownloadsModelTests)
1480-add_executable(${TEST} tst_DownloadsModelTests.cpp)
1481-include_directories(${webbrowser-app_SOURCE_DIR})
1482+add_executable(${TEST} tst_DownloadsModelTests.cpp ${webbrowser-common_SOURCE_DIR}/downloads-model.cpp)
1483+include_directories(${webbrowser-common_SOURCE_DIR})
1484 target_link_libraries(${TEST}
1485 Qt5::Core
1486 Qt5::Sql

Subscribers

People subscribed via source and target branches

to status/vote changes: