Merge lp:~abreu-alexandre/webbrowser-app/webapp-download into lp:webbrowser-app
- webapp-download
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu Phablet Team | Pending | ||
Review via email: mp+295980@code.launchpad.net |
Commit message
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 |