Merge lp:~nik90/podbird/add-episodes-batch-actions into lp:podbird/devel
- add-episodes-batch-actions
- Merge into devel
Proposed by
Nekhelesh Ramananthan
Status: | Merged |
---|---|
Merged at revision: | 138 |
Proposed branch: | lp:~nik90/podbird/add-episodes-batch-actions |
Merge into: | lp:podbird/devel |
Diff against target: |
655 lines (+291/-145) 4 files modified
app/ui/EpisodesPage.qml (+222/-79) app/ui/EpisodesTab.qml (+2/-0) app/ui/PodcastsTab.qml (+1/-1) po/podbird.nik90.pot (+66/-65) |
To merge this branch: | bzr merge lp:~nik90/podbird/add-episodes-batch-actions |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Podbird Developers | Pending | ||
Review via email: mp+289381@code.launchpad.net |
Commit message
Description of the change
- Added "%1 items selected" title during multi-select mode to make it more clear
- Changed Podcast remove icon to unsubscribe (used by telegram)
- Added batch actions to episodes page
- Converted episodes page to use PageHeader
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'app/ui/EpisodesPage.qml' |
2 | --- app/ui/EpisodesPage.qml 2016-03-16 15:30:47 +0000 |
3 | +++ app/ui/EpisodesPage.qml 2016-03-17 15:08:31 +0000 |
4 | @@ -29,8 +29,6 @@ |
5 | id: episodesPage |
6 | |
7 | visible: false |
8 | - title: i18n.tr("Podcast") |
9 | - flickable: null |
10 | |
11 | property string episodeName |
12 | property string episodeId |
13 | @@ -47,81 +45,205 @@ |
14 | tempGuid = downloader.downloadingGuid |
15 | } |
16 | |
17 | - head.contents: Label { |
18 | - text: title |
19 | - anchors.fill: parent |
20 | - anchors.margins: units.gu(0.5) |
21 | - verticalAlignment: Text.AlignVCenter |
22 | - |
23 | - textSize: Label.XLarge |
24 | - fontSizeMode: Text.Fit |
25 | - |
26 | - maximumLineCount: 3 |
27 | - minimumPointSize: 8 |
28 | - elide: Text.Right |
29 | - wrapMode: Text.WordWrap |
30 | - } |
31 | - |
32 | - state: "default" |
33 | - states: [ |
34 | - PageHeadState { |
35 | - name: "default" |
36 | - head: episodesPage.head |
37 | + header: standardHeader |
38 | + |
39 | + PageHeader { |
40 | + id: standardHeader |
41 | + title: i18n.tr("Podcast") |
42 | + flickable: null |
43 | + |
44 | + StyleHints { |
45 | + backgroundColor: podbird.appTheme.background |
46 | + } |
47 | + |
48 | + trailingActionBar.actions: [ |
49 | + Action { |
50 | + iconName: "search" |
51 | + text: i18n.tr("Search Episode") |
52 | + onTriggered: { |
53 | + episodesPage.header = searchHeader |
54 | + searchField.item.forceActiveFocus() |
55 | + } |
56 | + }, |
57 | + |
58 | + Action { |
59 | + text: i18n.tr("Unsubscribe") |
60 | + iconName: "system-log-out" |
61 | + onTriggered: { |
62 | + PopupUtils.open(confirmDeleteDialog, episodesPage); |
63 | + } |
64 | + } |
65 | + ] |
66 | + } |
67 | + |
68 | + PageHeader { |
69 | + id: searchHeader |
70 | + visible: episodesPage.header === searchHeader |
71 | + flickable: null |
72 | + |
73 | + leadingActionBar.actions: Action { |
74 | + iconName: "back" |
75 | + onTriggered: { |
76 | + episodeList.forceActiveFocus() |
77 | + episodesPage.header = standardHeader |
78 | + episodeList.positionViewAtBeginning() |
79 | + } |
80 | + } |
81 | + |
82 | + StyleHints { |
83 | + backgroundColor: podbird.appTheme.background |
84 | + } |
85 | + |
86 | + contents: Loader { |
87 | + id: searchField |
88 | + sourceComponent: episodesPage.header === searchHeader ? searchFieldComponent : undefined |
89 | + anchors.left: parent ? parent.left : undefined |
90 | + anchors.right: parent ? parent.right : undefined |
91 | + anchors.verticalCenter: parent ? parent.verticalCenter : undefined |
92 | + } |
93 | + } |
94 | + |
95 | + PageHeader { |
96 | + id: selectionHeader |
97 | + visible: episodeList.ViewItems.selectMode |
98 | + // TRANSLATORS: This is the page title. Keep it short. Otherwise it will just be elided. |
99 | + title: i18n.tr("%1 item selected", "%1 items selected", episodeList.ViewItems.selectedIndices.length).arg(episodeList.ViewItems.selectedIndices.length) |
100 | + |
101 | + onVisibleChanged: { |
102 | + if (visible) { |
103 | + episodesPage.header = selectionHeader |
104 | + } |
105 | + } |
106 | + |
107 | + StyleHints { |
108 | + backgroundColor: podbird.appTheme.background |
109 | + } |
110 | + |
111 | + leadingActionBar.actions: [ |
112 | + Action { |
113 | + iconName: "back" |
114 | + text: i18n.tr("Back") |
115 | + onTriggered: { |
116 | + episodeList.closeSelection() |
117 | + } |
118 | + } |
119 | + ] |
120 | + |
121 | + trailingActionBar { |
122 | + numberOfSlots: 6 |
123 | actions: [ |
124 | Action { |
125 | - iconName: "search" |
126 | - text: i18n.tr("Search Episode") |
127 | - onTriggered: { |
128 | - episodesPage.state = "search" |
129 | - searchField.item.forceActiveFocus() |
130 | - } |
131 | - }, |
132 | - |
133 | - Action { |
134 | iconName: "select" |
135 | - text: i18n.tr("Mark all listened") |
136 | - onTriggered: { |
137 | - var db = Podcasts.init(); |
138 | - db.transaction(function (tx) { |
139 | - tx.executeSql("UPDATE Episode SET listened=1 WHERE podcast=?", [episodeId]); |
140 | - refreshModel(); |
141 | - }); |
142 | - } |
143 | - }, |
144 | - |
145 | - Action { |
146 | - text: i18n.tr("Unsubscribe") |
147 | + text: i18n.tr("Mark Listened") |
148 | + enabled: episodeList.ViewItems.selectedIndices.length !== 0 |
149 | + visible: episodesPage.mode !== "listened" |
150 | + onTriggered: { |
151 | + var db = Podcasts.init(); |
152 | + db.transaction(function (tx) { |
153 | + for (var i=0; i<episodeList.ViewItems.selectedIndices.length; i++) { |
154 | + var index = episodeList.ViewItems.selectedIndices[i] |
155 | + tx.executeSql("UPDATE Episode SET listened=1 WHERE guid=?", [episodeModel.get(index).guid]); |
156 | + } |
157 | + }); |
158 | + |
159 | + refreshModel(); |
160 | + episodeList.closeSelection() |
161 | + } |
162 | + }, |
163 | + |
164 | + Action { |
165 | + iconName: "save" |
166 | + text: i18n.tr("Download episode(s)") |
167 | + enabled: episodeList.ViewItems.selectedIndices.length !== 0 |
168 | + visible: episodesPage.mode !== "downloaded" |
169 | + |
170 | + onTriggered: { |
171 | + var db = Podcasts.init(); |
172 | + db.transaction(function (tx) { |
173 | + for (var i=0; i<episodeList.ViewItems.selectedIndices.length; i++) { |
174 | + var index = episodeList.ViewItems.selectedIndices[i] |
175 | + if (!episodeModel.get(index).downloadedfile) { |
176 | + episodeModel.setProperty(index, "queued", 1) |
177 | + tx.executeSql("UPDATE Episode SET queued=1 WHERE guid = ?", [episodeModel.get(index).guid]); |
178 | + if (episodeModel.get(index).audiourl) { |
179 | + podbird.downloadEpisode(episodeModel.get(index).image, episodeModel.get(index).name, episodeModel.get(index).guid, episodeModel.get(index).audiourl) |
180 | + } else { |
181 | + console.log("[ERROR]: Invalid download url: " + episodeModel.get(index).audiourl) |
182 | + } |
183 | + } |
184 | + } |
185 | + }); |
186 | + |
187 | + refreshModel(); |
188 | + episodeList.closeSelection() |
189 | + } |
190 | + }, |
191 | + |
192 | + Action { |
193 | iconName: "delete" |
194 | - onTriggered: { |
195 | - PopupUtils.open(confirmDeleteDialog, episodesPage); |
196 | + text: i18n.tr("Delete episode(s)") |
197 | + enabled: episodeList.ViewItems.selectedIndices.length !== 0 |
198 | + |
199 | + onTriggered: { |
200 | + var db = Podcasts.init(); |
201 | + db.transaction(function (tx) { |
202 | + for (var i=0; i<episodeList.ViewItems.selectedIndices.length; i++) { |
203 | + var index = episodeList.ViewItems.selectedIndices[i] |
204 | + if (episodeModel.get(index).downloadedfile) { |
205 | + fileManager.deleteFile(episodeModel.get(index).downloadedfile); |
206 | + tx.executeSql("UPDATE Episode SET downloadedfile = NULL WHERE guid = ?", [episodeModel.get(index).guid]); |
207 | + episodeModel.setProperty(index, "downloadedfile", "") |
208 | + } |
209 | + } |
210 | + }); |
211 | + |
212 | + refreshModel(); |
213 | + episodeList.closeSelection() |
214 | + } |
215 | + }, |
216 | + |
217 | + Action { |
218 | + iconName: "like" |
219 | + text: i18n.tr("Favourite episode(s)") |
220 | + enabled: episodeList.ViewItems.selectedIndices.length !== 0 |
221 | + |
222 | + onTriggered: { |
223 | + var db = Podcasts.init(); |
224 | + db.transaction(function (tx) { |
225 | + for (var i=0; i<episodeList.ViewItems.selectedIndices.length; i++) { |
226 | + var index = episodeList.ViewItems.selectedIndices[i] |
227 | + if (!episodeModel.get(index).favourited) { |
228 | + tx.executeSql("UPDATE Episode SET favourited=1 WHERE guid=?", [episodeModel.get(index).guid]) |
229 | + episodeModel.setProperty(index, "favourited", 1) |
230 | + } |
231 | + } |
232 | + }); |
233 | + |
234 | + refreshModel(); |
235 | + episodeList.closeSelection() |
236 | + } |
237 | + }, |
238 | + |
239 | + Action { |
240 | + iconName: "add-to-playlist" |
241 | + text: i18n.tr("Add to queue") |
242 | + enabled: episodeList.ViewItems.selectedIndices.length !== 0 |
243 | + |
244 | + onTriggered: { |
245 | + for (var i=0; i<episodeList.ViewItems.selectedIndices.length; i++) { |
246 | + var index = episodeList.ViewItems.selectedIndices[i] |
247 | + if (episodeModel.get(index).audiourl) { |
248 | + var url = episodeModel.get(index).downloadedfile ? "file://" + episodeModel.get(index).downloadedfile : episodeModel.get(index).audiourl |
249 | + player.addEpisodeToQueue(episodeModel.get(index).guid, episodeModel.get(index).image, episodeModel.get(index).name, episodeModel.get(index).artist, url) |
250 | + } |
251 | + } |
252 | + |
253 | + episodeList.closeSelection() |
254 | } |
255 | } |
256 | - |
257 | ] |
258 | - }, |
259 | - |
260 | - PageHeadState { |
261 | - name: "search" |
262 | - head: episodesPage.head |
263 | - |
264 | - backAction: Action { |
265 | - iconName: "back" |
266 | - onTriggered: { |
267 | - episodeList.forceActiveFocus() |
268 | - episodesPage.state = "default" |
269 | - episodeList.positionViewAtBeginning() |
270 | - } |
271 | - } |
272 | - |
273 | - contents: Loader { |
274 | - id: searchField |
275 | - sourceComponent: episodesPage.state === "search" ? searchFieldComponent : undefined |
276 | - anchors.left: parent ? parent.left : undefined |
277 | - anchors.right: parent ? parent.right : undefined |
278 | - anchors.rightMargin: units.gu(2) |
279 | - } |
280 | } |
281 | - ] |
282 | + } |
283 | |
284 | onVisibleChanged: { |
285 | if (!visible) { |
286 | @@ -252,8 +374,8 @@ |
287 | verticalCenterOffset: Qt.inputMethod.visible ? units.gu(4) : 0 |
288 | } |
289 | |
290 | - sourceComponent: (episodesPage.state === "search" && sortedEpisodeModel.count === 0) ? emptyStateComponent |
291 | - : undefined |
292 | + sourceComponent: (episodesPage.header === searchHeader && sortedEpisodeModel.count === 0) ? emptyStateComponent |
293 | + : undefined |
294 | } |
295 | |
296 | Component { |
297 | @@ -273,13 +395,16 @@ |
298 | id: sortedEpisodeModel |
299 | model: episodeModel |
300 | filter.property: "name" |
301 | - filter.pattern: episodesPage.state === "search" && searchField.status == Loader.Ready ? RegExp(searchField.item.text, "gi") |
302 | - : RegExp("", "gi") |
303 | + filter.pattern: episodesPage.header === searchHeader && searchField.status == Loader.Ready ? RegExp(searchField.item.text, "gi") |
304 | + : RegExp("", "gi") |
305 | } |
306 | |
307 | ListView { |
308 | id: episodeList |
309 | |
310 | + signal clearSelection() |
311 | + signal closeSelection() |
312 | + |
313 | Component.onCompleted: { |
314 | // FIXME: workaround for qtubuntu not returning values depending on the grid unit definition |
315 | // for Flickable.maximumFlickVelocity and Flickable.flickDeceleration |
316 | @@ -288,7 +413,7 @@ |
317 | flickDeceleration = flickDeceleration * scaleFactor; |
318 | } |
319 | |
320 | - anchors.fill: parent |
321 | + anchors { fill: parent; topMargin: episodesPage.header.height } |
322 | model: sortedEpisodeModel |
323 | clip: true |
324 | |
325 | @@ -298,8 +423,8 @@ |
326 | id: coverArtContainer |
327 | |
328 | width: episodesPage.width |
329 | - visible: episodesPage.state !== "search" && sortedEpisodeModel.count !== 0 |
330 | - height: episodesPage.state !== "search" && sortedEpisodeModel.count !== 0 ? cover.height + units.gu(6) : 0 |
331 | + visible: episodesPage.header !== searchHeader && sortedEpisodeModel.count !== 0 |
332 | + height: episodesPage.header !== searchHeader && sortedEpisodeModel.count !== 0 ? cover.height + units.gu(6) : 0 |
333 | |
334 | Image { |
335 | id:cover |
336 | @@ -549,11 +674,29 @@ |
337 | |
338 | onClicked: { |
339 | Haptics.play() |
340 | - if (currentGuid !== model.guid) { |
341 | - currentUrl = model.downloadedfile ? "file://" + model.downloadedfile : model.audiourl; |
342 | - player.playEpisode(model.guid, model.image, model.name, model.artist, currentUrl) |
343 | + if (selectMode) { |
344 | + selected = !selected |
345 | + } else { |
346 | + if (currentGuid !== model.guid) { |
347 | + currentUrl = model.downloadedfile ? "file://" + model.downloadedfile : model.audiourl; |
348 | + player.playEpisode(model.guid, model.image, model.name, model.artist, currentUrl) |
349 | + } |
350 | } |
351 | } |
352 | + |
353 | + onPressAndHold: { |
354 | + ListView.view.ViewItems.selectMode = !ListView.view.ViewItems.selectMode |
355 | + } |
356 | + } |
357 | + |
358 | + onClearSelection: { |
359 | + ViewItems.selectedIndices = [] |
360 | + } |
361 | + |
362 | + onCloseSelection: { |
363 | + clearSelection() |
364 | + ViewItems.selectMode = false |
365 | + episodesPage.header = standardHeader |
366 | } |
367 | |
368 | PullToRefresh { |
369 | |
370 | === modified file 'app/ui/EpisodesTab.qml' |
371 | --- app/ui/EpisodesTab.qml 2016-03-16 15:35:38 +0000 |
372 | +++ app/ui/EpisodesTab.qml 2016-03-17 15:08:31 +0000 |
373 | @@ -124,6 +124,8 @@ |
374 | PageHeader { |
375 | id: selectionHeader |
376 | visible: episodeList.ViewItems.selectMode |
377 | + // TRANSLATORS: This is the page title. Keep it short. Otherwise it will just be elided. |
378 | + title: i18n.tr("%1 item selected", "%1 items selected", episodeList.ViewItems.selectedIndices.length).arg(episodeList.ViewItems.selectedIndices.length) |
379 | |
380 | onVisibleChanged: { |
381 | if (visible) { |
382 | |
383 | === modified file 'app/ui/PodcastsTab.qml' |
384 | --- app/ui/PodcastsTab.qml 2016-03-17 02:19:48 +0000 |
385 | +++ app/ui/PodcastsTab.qml 2016-03-17 15:08:31 +0000 |
386 | @@ -228,7 +228,7 @@ |
387 | leadingActions: ListItemActions { |
388 | actions: [ |
389 | Action { |
390 | - iconName: "delete" |
391 | + iconName: "system-log-out" |
392 | onTriggered: { |
393 | var db = Podcasts.init(); |
394 | db.transaction(function (tx) { |
395 | |
396 | === modified file 'po/podbird.nik90.pot' |
397 | --- po/podbird.nik90.pot 2016-03-17 02:19:48 +0000 |
398 | +++ po/podbird.nik90.pot 2016-03-17 15:08:31 +0000 |
399 | @@ -8,7 +8,7 @@ |
400 | msgstr "" |
401 | "Project-Id-Version: \n" |
402 | "Report-Msgid-Bugs-To: \n" |
403 | -"POT-Creation-Date: 2016-03-17 07:43+0530\n" |
404 | +"POT-Creation-Date: 2016-03-17 20:36+0530\n" |
405 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
406 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
407 | "Language-Team: LANGUAGE <LL@li.org>\n" |
408 | @@ -22,8 +22,8 @@ |
409 | msgid "Episodes" |
410 | msgstr "" |
411 | |
412 | -#: ../app/components/TabsList.qml:35 |
413 | -msgid "Add new podcast" |
414 | +#: ../app/components/TabsList.qml:35 ../app/ui/SearchPage.qml:41 |
415 | +msgid "Add New Podcasts" |
416 | msgstr "" |
417 | |
418 | #: ../app/components/TabsList.qml:43 ../app/ui/PodcastsTab.qml:42 |
419 | @@ -154,67 +154,96 @@ |
420 | msgid "Dark" |
421 | msgstr "" |
422 | |
423 | -#: ../app/ui/EpisodesPage.qml:32 |
424 | +#: ../app/ui/EpisodesPage.qml:52 |
425 | msgid "Podcast" |
426 | msgstr "" |
427 | |
428 | -#: ../app/ui/EpisodesPage.qml:73 ../app/ui/EpisodesTab.qml:62 |
429 | +#: ../app/ui/EpisodesPage.qml:62 ../app/ui/EpisodesTab.qml:62 |
430 | msgid "Search Episode" |
431 | msgstr "" |
432 | |
433 | -#: ../app/ui/EpisodesPage.qml:82 |
434 | -msgid "Mark all listened" |
435 | -msgstr "" |
436 | - |
437 | -#: ../app/ui/EpisodesPage.qml:93 ../app/ui/EpisodesPage.qml:184 |
438 | +#: ../app/ui/EpisodesPage.qml:70 ../app/ui/EpisodesPage.qml:306 |
439 | #: ../app/ui/SearchPage.qml:275 |
440 | msgid "Unsubscribe" |
441 | msgstr "" |
442 | |
443 | -#: ../app/ui/EpisodesPage.qml:136 ../app/ui/EpisodesTab.qml:120 |
444 | +#. TRANSLATORS: This is the page title. Keep it short. Otherwise it will just be elided. |
445 | +#: ../app/ui/EpisodesPage.qml:110 ../app/ui/EpisodesTab.qml:128 |
446 | +#, qt-format |
447 | +msgid "%1 item selected" |
448 | +msgid_plural "%1 items selected" |
449 | +msgstr[0] "" |
450 | +msgstr[1] "" |
451 | + |
452 | +#: ../app/ui/EpisodesPage.qml:125 ../app/ui/EpisodesTab.qml:143 |
453 | +#: ../app/ui/NowPlayingPage.qml:42 |
454 | +msgid "Back" |
455 | +msgstr "" |
456 | + |
457 | +#: ../app/ui/EpisodesPage.qml:137 ../app/ui/EpisodesTab.qml:155 |
458 | +msgid "Mark Listened" |
459 | +msgstr "" |
460 | + |
461 | +#: ../app/ui/EpisodesPage.qml:156 ../app/ui/EpisodesTab.qml:173 |
462 | +msgid "Download episode(s)" |
463 | +msgstr "" |
464 | + |
465 | +#: ../app/ui/EpisodesPage.qml:184 ../app/ui/EpisodesTab.qml:201 |
466 | +msgid "Delete episode(s)" |
467 | +msgstr "" |
468 | + |
469 | +#: ../app/ui/EpisodesPage.qml:207 ../app/ui/EpisodesTab.qml:224 |
470 | +msgid "Favourite episode(s)" |
471 | +msgstr "" |
472 | + |
473 | +#: ../app/ui/EpisodesPage.qml:229 ../app/ui/EpisodesTab.qml:270 |
474 | +msgid "Add to queue" |
475 | +msgstr "" |
476 | + |
477 | +#: ../app/ui/EpisodesPage.qml:258 ../app/ui/EpisodesTab.qml:120 |
478 | msgid "Search episode" |
479 | msgstr "" |
480 | |
481 | -#: ../app/ui/EpisodesPage.qml:181 |
482 | +#: ../app/ui/EpisodesPage.qml:303 |
483 | msgid "Unsubscribe Confirmation" |
484 | msgstr "" |
485 | |
486 | -#: ../app/ui/EpisodesPage.qml:182 |
487 | +#: ../app/ui/EpisodesPage.qml:304 |
488 | #, qt-format |
489 | msgid "Are you sure you want to unsubscribe from <b>%1</b>?" |
490 | msgstr "" |
491 | |
492 | -#: ../app/ui/EpisodesPage.qml:201 ../app/ui/SearchPage.qml:130 |
493 | +#: ../app/ui/EpisodesPage.qml:323 ../app/ui/SearchPage.qml:130 |
494 | #: ../app/ui/SettingsPage.qml:83 ../app/ui/SettingsPage.qml:118 |
495 | msgid "Cancel" |
496 | msgstr "" |
497 | |
498 | -#: ../app/ui/EpisodesPage.qml:223 ../app/ui/EpisodesTab.qml:405 |
499 | +#: ../app/ui/EpisodesPage.qml:345 ../app/ui/EpisodesTab.qml:407 |
500 | msgid "Episode Description" |
501 | msgstr "" |
502 | |
503 | -#: ../app/ui/EpisodesPage.qml:235 ../app/ui/EpisodesTab.qml:417 |
504 | +#: ../app/ui/EpisodesPage.qml:357 ../app/ui/EpisodesTab.qml:419 |
505 | #: ../app/ui/SearchPage.qml:179 |
506 | msgid "Close" |
507 | msgstr "" |
508 | |
509 | -#: ../app/ui/EpisodesPage.qml:263 |
510 | +#: ../app/ui/EpisodesPage.qml:385 |
511 | msgid "No episodes found" |
512 | msgstr "" |
513 | |
514 | -#: ../app/ui/EpisodesPage.qml:264 |
515 | +#: ../app/ui/EpisodesPage.qml:386 |
516 | msgid "No episodes found matching the search term." |
517 | msgstr "" |
518 | |
519 | -#: ../app/ui/EpisodesPage.qml:378 |
520 | +#: ../app/ui/EpisodesPage.qml:503 |
521 | msgid "Unheard" |
522 | msgstr "" |
523 | |
524 | -#: ../app/ui/EpisodesPage.qml:395 |
525 | +#: ../app/ui/EpisodesPage.qml:520 |
526 | msgid "Listened" |
527 | msgstr "" |
528 | |
529 | -#: ../app/ui/EpisodesPage.qml:414 |
530 | +#: ../app/ui/EpisodesPage.qml:539 |
531 | msgid "Downloaded" |
532 | msgstr "" |
533 | |
534 | @@ -230,83 +259,59 @@ |
535 | msgid "Favourites" |
536 | msgstr "" |
537 | |
538 | -#: ../app/ui/EpisodesTab.qml:141 ../app/ui/NowPlayingPage.qml:42 |
539 | -msgid "Back" |
540 | -msgstr "" |
541 | - |
542 | -#: ../app/ui/EpisodesTab.qml:153 |
543 | -msgid "Mark Listened" |
544 | -msgstr "" |
545 | - |
546 | -#: ../app/ui/EpisodesTab.qml:171 |
547 | -msgid "Download episode(s)" |
548 | -msgstr "" |
549 | - |
550 | -#: ../app/ui/EpisodesTab.qml:199 |
551 | -msgid "Delete episode(s)" |
552 | -msgstr "" |
553 | - |
554 | -#: ../app/ui/EpisodesTab.qml:222 |
555 | -msgid "Favourite episode(s)" |
556 | -msgstr "" |
557 | - |
558 | -#: ../app/ui/EpisodesTab.qml:245 |
559 | +#: ../app/ui/EpisodesTab.qml:247 |
560 | msgid "Unfavourite episode(s)" |
561 | msgstr "" |
562 | |
563 | -#: ../app/ui/EpisodesTab.qml:268 |
564 | -msgid "Add to queue" |
565 | -msgstr "" |
566 | - |
567 | -#: ../app/ui/EpisodesTab.qml:308 |
568 | +#: ../app/ui/EpisodesTab.qml:310 |
569 | msgid "No New Episodes" |
570 | msgstr "" |
571 | |
572 | -#: ../app/ui/EpisodesTab.qml:310 |
573 | +#: ../app/ui/EpisodesTab.qml:312 |
574 | msgid "No Downloaded Episodes" |
575 | msgstr "" |
576 | |
577 | -#: ../app/ui/EpisodesTab.qml:312 |
578 | +#: ../app/ui/EpisodesTab.qml:314 |
579 | msgid "No Favourited Episodes" |
580 | msgstr "" |
581 | |
582 | -#: ../app/ui/EpisodesTab.qml:314 |
583 | +#: ../app/ui/EpisodesTab.qml:316 |
584 | msgid "No Episodes Found" |
585 | msgstr "" |
586 | |
587 | -#: ../app/ui/EpisodesTab.qml:320 |
588 | +#: ../app/ui/EpisodesTab.qml:322 |
589 | msgid "No more episodes to listen to!" |
590 | msgstr "" |
591 | |
592 | -#: ../app/ui/EpisodesTab.qml:322 |
593 | +#: ../app/ui/EpisodesTab.qml:324 |
594 | msgid "No episodes have been downloaded for offline listening" |
595 | msgstr "" |
596 | |
597 | -#: ../app/ui/EpisodesTab.qml:324 |
598 | +#: ../app/ui/EpisodesTab.qml:326 |
599 | msgid "No episodes have been favourited." |
600 | msgstr "" |
601 | |
602 | -#: ../app/ui/EpisodesTab.qml:326 |
603 | +#: ../app/ui/EpisodesTab.qml:328 |
604 | msgid "No Episodes found matching the search term." |
605 | msgstr "" |
606 | |
607 | -#: ../app/ui/EpisodesTab.qml:456 |
608 | +#: ../app/ui/EpisodesTab.qml:458 |
609 | msgid "Downloads in progress" |
610 | msgstr "" |
611 | |
612 | -#: ../app/ui/EpisodesTab.qml:496 |
613 | +#: ../app/ui/EpisodesTab.qml:498 |
614 | msgid "Downloaded episodes" |
615 | msgstr "" |
616 | |
617 | -#: ../app/ui/EpisodesTab.qml:506 |
618 | +#: ../app/ui/EpisodesTab.qml:508 |
619 | msgid "Today" |
620 | msgstr "" |
621 | |
622 | -#: ../app/ui/EpisodesTab.qml:510 |
623 | +#: ../app/ui/EpisodesTab.qml:512 |
624 | msgid "Yesterday" |
625 | msgstr "" |
626 | |
627 | -#: ../app/ui/EpisodesTab.qml:514 |
628 | +#: ../app/ui/EpisodesTab.qml:516 |
629 | msgid "Older" |
630 | msgstr "" |
631 | |
632 | @@ -368,10 +373,6 @@ |
633 | msgstr[0] "" |
634 | msgstr[1] "" |
635 | |
636 | -#: ../app/ui/SearchPage.qml:41 |
637 | -msgid "Add New Podcasts" |
638 | -msgstr "" |
639 | - |
640 | #: ../app/ui/SearchPage.qml:63 |
641 | msgid "Add Podcast" |
642 | msgstr "" |
643 | @@ -569,10 +570,10 @@ |
644 | msgid "Finish" |
645 | msgstr "" |
646 | |
647 | -#: /home/krnekhelesh/Development/reintroduce-add-podcast-tab-build/po/Podbird.desktop.in.h:1 |
648 | +#: /home/krnekhelesh/Development/fix-minor-episodes-page-build/po/Podbird.desktop.in.h:1 |
649 | msgid "The chirpiest podcast manager for Ubuntu" |
650 | msgstr "" |
651 | |
652 | -#: /home/krnekhelesh/Development/reintroduce-add-podcast-tab-build/po/Podbird.desktop.in.h:2 |
653 | +#: /home/krnekhelesh/Development/fix-minor-episodes-page-build/po/Podbird.desktop.in.h:2 |
654 | msgid "podcast;audio;itunes;broadcast;digital;stream;podcatcher;video;vodcast;" |
655 | msgstr "" |