Merge lp:~nik90/cliffhanger/convergence-1 into lp:cliffhanger
- convergence-1
- Merge into develop
Proposed by
Nekhelesh Ramananthan
Status: | Needs review |
---|---|
Proposed branch: | lp:~nik90/cliffhanger/convergence-1 |
Merge into: | lp:cliffhanger |
Diff against target: |
11825 lines (+11078/-0) (has conflicts) 116 files modified
.bzrignore (+1/-0) Flashback.desktop (+10/-0) Flashback.json (+6/-0) Flashback.qml (+286/-0) Flashback.qmlproject (+46/-0) Makefile (+18/-0) backend/backend.js (+204/-0) backend/sha1.js (+202/-0) components/BlurredBackground.qml (+50/-0) components/Carousel.qml (+125/-0) components/DesaturatedThumbnail.qml (+60/-0) components/DetailCarousel.qml (+192/-0) components/Development.qml (+25/-0) components/Grid.qml (+278/-0) components/ImageLabel.qml (+53/-0) components/ListViewExpandable.qml (+80/-0) components/LoadingIndicator.qml (+60/-0) components/Notification.qml (+190/-0) components/NowWatching.qml (+147/-0) components/RatingChooser.qml (+106/-0) components/Rotater.qml (+66/-0) components/SearchBox.qml (+57/-0) components/SearchPage.qml (+74/-0) components/SidebarMenuItem.qml (+155/-0) components/StatusIcons.qml (+68/-0) components/TabletSidebar.qml (+58/-0) components/Thumbnail.qml (+41/-0) components/TraktAction.qml (+28/-0) components/TraktPopup.qml (+123/-0) components/TraktRating.qml (+56/-0) debian/changelog (+27/-0) debian/compat (+1/-0) debian/control (+23/-0) debian/copyright (+28/-0) debian/install (+9/-0) debian/rules (+7/-0) debian/source/format (+1/-0) graphics/find@32.svg (+140/-0) graphics/play@32.svg (+98/-0) graphics/search_icon@8.svg (+153/-0) graphics/settings@32.svg (+138/-0) graphics/share@32.svg (+96/-0) manifest.json (+15/-0) models/Activity.qml (+97/-0) models/AiringShows.qml (+66/-0) models/BaseModel.qml (+58/-0) models/BasePostModel.qml (+64/-0) models/Cast.qml (+38/-0) models/Crew.qml (+37/-0) models/Episode.qml (+55/-0) models/Genres.qml (+35/-0) models/Movie.qml (+57/-0) models/Movies.qml (+37/-0) models/People.qml (+36/-0) models/Person.qml (+48/-0) models/PersonCast.qml (+40/-0) models/PersonCrew.qml (+40/-0) models/SeasonEpisodes.qml (+38/-0) models/Show.qml (+65/-0) models/ShowSeasons.qml (+37/-0) models/Shows.qml (+42/-0) models/Trailer.qml (+37/-0) models/TraktAccount.qml (+28/-0) models/TraktCast.qml (+37/-0) models/TraktCheckIn.qml (+39/-0) models/TraktComments.qml (+39/-0) models/TraktRatingModel.qml (+82/-0) models/TraktRecommendedMovies.qml (+38/-0) models/TraktSeen.qml (+39/-0) models/TraktShowWatchlist.qml (+52/-0) models/TraktUserComment.qml (+35/-0) models/TraktUserRating.qml (+35/-0) models/TraktUserWatchlist.qml (+48/-0) models/TraktWatchlist.qml (+33/-0) models/TrendingMovies.qml (+40/-0) po/Cliffhanger.pot (+404/-0) tests/TestModel.qml (+40/-0) tests/autopilot/Cliffhanger/__init__.py (+131/-0) tests/autopilot/Cliffhanger/main/__init__.py (+1/-0) tests/autopilot/Cliffhanger/main/test_main.py (+23/-0) tests/autopilot/run (+11/-0) ui/About.qml (+79/-0) ui/CastPage.qml (+48/-0) ui/CommentsPage.qml (+316/-0) ui/CrewPage.qml (+46/-0) ui/EpisodePage.qml (+325/-0) ui/HomeTab.qml (+351/-0) ui/HomeTabTablet.qml (+134/-0) ui/MovieByGenre.qml (+86/-0) ui/MovieByRating.qml (+50/-0) ui/MovieByRecommendation.qml (+52/-0) ui/MoviePage.qml (+540/-0) ui/MovieTab.qml (+169/-0) ui/MovieTabTablet.qml (+160/-0) ui/PersonPage.qml (+309/-0) ui/PersonTab.qml (+71/-0) ui/SearchAll.qml (+114/-0) ui/SearchMovie.qml (+41/-0) ui/SearchPerson.qml (+41/-0) ui/SearchTv.qml (+41/-0) ui/SeasonPage.qml (+299/-0) ui/SettingPage.qml (+137/-0) ui/Trakt.qml (+95/-0) ui/TraktCheckIn.qml (+185/-0) ui/TraktLogin.qml (+284/-0) ui/TvPage.qml (+448/-0) ui/TvSeasons.qml (+62/-0) ui/TvTab.qml (+176/-0) walkthrough/Slide1.qml (+76/-0) walkthrough/Slide2.qml (+71/-0) walkthrough/Slide3.qml (+66/-0) walkthrough/Slide4.qml (+66/-0) walkthrough/Slide5.qml (+65/-0) walkthrough/Slide6.qml (+108/-0) walkthrough/Slide7.qml (+97/-0) walkthrough/Walkthrough.qml (+187/-0) Conflict adding file Flashback.desktop. Moved existing file to Flashback.desktop.moved. Conflict adding file Flashback.json. Moved existing file to Flashback.json.moved. Conflict adding file Flashback.qml. Moved existing file to Flashback.qml.moved. Conflict adding file Flashback.qmlproject. Moved existing file to Flashback.qmlproject.moved. Conflict adding file Makefile. Moved existing file to Makefile.moved. Conflict adding file backend. Moved existing file to backend.moved. Conflict adding file components. Moved existing file to components.moved. Conflict adding file debian. Moved existing file to debian.moved. Conflict adding file design.jpg. Moved existing file to design.jpg.moved. Conflict adding file flashback.png. Moved existing file to flashback.png.moved. Conflict adding file graphics. Moved existing file to graphics.moved. Conflict adding file manifest.json. Moved existing file to manifest.json.moved. Conflict adding file models. Moved existing file to models.moved. Conflict adding file po. Moved existing file to po.moved. Conflict adding file tests. Moved existing file to tests.moved. Conflict adding file ui. Moved existing file to ui.moved. Conflict adding file walkthrough. Moved existing file to walkthrough.moved. |
To merge this branch: | bzr merge lp:~nik90/cliffhanger/convergence-1 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Nekhelesh Ramananthan | Pending | ||
Review via email: mp+219568@code.launchpad.net |
Commit message
Description of the change
test code diff
To post a comment you must log in.
Unmerged revisions
- 67. By Nekhelesh Ramananthan
-
Added hometab convergence
- 66. By Nekhelesh Ramananthan
-
Miscellaneous fixes
- 65. By Nekhelesh Ramananthan
-
Tweaked grid behaviour
- 64. By Nekhelesh Ramananthan
-
Fixed the height of ImageLabel component
- 63. By Nekhelesh Ramananthan
-
Added workaround for Layout bug
- 62. By Nekhelesh Ramananthan
-
Added workaround for layouts bug
- 61. By Nekhelesh Ramananthan
-
Finalised movie tab tablet UI
- 60. By Nekhelesh Ramananthan
-
Moved sidebar to a new component
- 59. By Nekhelesh Ramananthan
-
Finalised sidebar menu item implementation
- 58. By Nekhelesh Ramananthan
-
MovieTab workaround for layouts visibility issue
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added file '.bzrignore' |
2 | --- .bzrignore 1970-01-01 00:00:00 +0000 |
3 | +++ .bzrignore 2014-05-14 17:33:57 +0000 |
4 | @@ -0,0 +1,1 @@ |
5 | +*.qmlproject.user |
6 | |
7 | === added file 'Flashback.desktop' |
8 | --- Flashback.desktop 1970-01-01 00:00:00 +0000 |
9 | +++ Flashback.desktop 2014-05-14 17:33:57 +0000 |
10 | @@ -0,0 +1,10 @@ |
11 | +[Desktop Entry] |
12 | +Version=1.0 |
13 | +Name=Flashback |
14 | +Comment=My project description |
15 | +Exec=qmlscene $@ /usr/share/flashback/Flashback.qml |
16 | +Icon=flashback.png |
17 | +Terminal=false |
18 | +Type=Application |
19 | +Keywords=Movie,Film,TV,Show,Entertainment; |
20 | +X-Ubuntu-Touch=true |
21 | |
22 | === renamed file 'Flashback.desktop' => 'Flashback.desktop.moved' |
23 | === added file 'Flashback.json' |
24 | --- Flashback.json 1970-01-01 00:00:00 +0000 |
25 | +++ Flashback.json 2014-05-14 17:33:57 +0000 |
26 | @@ -0,0 +1,6 @@ |
27 | +{ |
28 | + "policy_groups": [ |
29 | + "networking" |
30 | + ], |
31 | + "policy_version": 1.1 |
32 | +} |
33 | \ No newline at end of file |
34 | |
35 | === renamed file 'Flashback.json' => 'Flashback.json.moved' |
36 | === added file 'Flashback.qml' |
37 | --- Flashback.qml 1970-01-01 00:00:00 +0000 |
38 | +++ Flashback.qml 2014-05-14 17:33:57 +0000 |
39 | @@ -0,0 +1,286 @@ |
40 | +/* |
41 | + * Flashback - Entertainment app for Ubuntu |
42 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
43 | + * |
44 | + * This program is free software: you can redistribute it and/or modify |
45 | + * it under the terms of the GNU General Public License version 3 as |
46 | + * published by the Free Software Foundation. |
47 | + * |
48 | + * This program is distributed in the hope that it will be useful, |
49 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
50 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
51 | + * GNU General Public License for more details. |
52 | + * |
53 | + * You should have received a copy of the GNU General Public License |
54 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
55 | + * |
56 | + */ |
57 | + |
58 | +import QtQuick 2.0 |
59 | +import U1db 1.0 as U1db |
60 | +import Ubuntu.Components 0.1 |
61 | +import "backend/backend.js" as Backend |
62 | +import "models" |
63 | +import "ui" |
64 | + |
65 | +MainView { |
66 | + id: mainView |
67 | + |
68 | + // objectName for functional testing purposes (autopilot-qt5) |
69 | + objectName: "mainView" |
70 | + |
71 | + // Note! applicationName needs to match the "name" field of the click manifest |
72 | + applicationName: "com.ubuntu.developer.nik90.flashback" |
73 | + |
74 | + /* |
75 | + This property enables the application to change orientation |
76 | + when the device is rotated. The default is false. |
77 | + */ |
78 | + automaticOrientation: true |
79 | + |
80 | + /* |
81 | + This property is to ensure that the input text fields are not hidden |
82 | + by the on-screen keyboard |
83 | + */ |
84 | + anchorToKeyboard: true |
85 | + |
86 | + width: units.gu(50) |
87 | + height: units.gu(100) |
88 | + |
89 | + // TODO: This is a temporary app background. Final background color needs to be decided. |
90 | + backgroundColor: UbuntuColors.coolGrey |
91 | + |
92 | + // Property to determine if the tablet view should be shown |
93 | + property bool tabletLandscapeForm: mainView.width >= units.gu(130) |
94 | + property bool tabletPortraitForm: mainView.width >= units.gu(80) && mainView.width < units.gu(130) |
95 | + |
96 | + actions: [ |
97 | + Action { |
98 | + id: appSettingsAction |
99 | + text: i18n.tr("Settings") |
100 | + keywords: i18n.tr("Settings;Setting;Configuration;Account;Authenticate") |
101 | + description: i18n.tr("Application Settings") |
102 | + iconSource: Qt.resolvedUrl("graphics/settings.svg") |
103 | + onTriggered: pagestack.push(Qt.resolvedUrl("ui/SettingPage.qml")) |
104 | + }, |
105 | + Action { |
106 | + id: returnHomeAction |
107 | + text: i18n.tr("Home") |
108 | + keywords: i18n.tr("Return;Navigate;Home;Page;Tab") |
109 | + description: i18n.tr("Get back to the first page") |
110 | + iconSource: Qt.resolvedUrl("graphics/home.png") |
111 | + onTriggered: { |
112 | + while(pagestack.depth !== 1) |
113 | + pagestack.pop() |
114 | + } |
115 | + } |
116 | + ] |
117 | + |
118 | + // Database to store app data locally |
119 | + U1db.Database { |
120 | + id: db |
121 | + path: "settings" |
122 | + } |
123 | + |
124 | + // Document to store the firstrun value of the app |
125 | + U1db.Document { |
126 | + id: firstRunDocument |
127 | + database: db |
128 | + docId: "firstRun" |
129 | + create: true |
130 | + defaults: { "firstrun": "true" } |
131 | + } |
132 | + |
133 | + // Document to store user's Trakt account credentials (password encrypted before storage) |
134 | + U1db.Document { |
135 | + id: traktLogin |
136 | + database: db |
137 | + docId: "traktLoginCredentials" |
138 | + create: true |
139 | + defaults: { "username": "johnDoe", "password": "password", "status": "disabled" } |
140 | + Component.onCompleted: pagestack.account_status = contents.status |
141 | + onContentsChanged: { |
142 | + if(traktLogin.contents.status === "disabled") |
143 | + userActivityLoader.sourceComponent = undefined; |
144 | + else |
145 | + userActivityLoader.sourceComponent = userActivity |
146 | + } |
147 | + } |
148 | + |
149 | + // Document to store the user's movie activity on Trakt |
150 | + U1db.Document { |
151 | + id: movieActivityDocument |
152 | + database: db |
153 | + docId: "traktMovieActivity" |
154 | + create: true |
155 | + defaults: { "name": "default", "id": "default", "imdb": "default", "runtime": "default", "year": "default", "trailer": "default","poster": "default", "fanart": "default" } |
156 | + function setValues(Name, Id, Imdb, Runtime, Year, Trailer, Poster, Fanart) { |
157 | + movieActivityDocument.contents = { |
158 | + name: Name, |
159 | + id: Id, |
160 | + imdb: Imdb, |
161 | + runtime: Runtime, |
162 | + year: Year, |
163 | + trailer: Trailer, |
164 | + poster: Poster, |
165 | + fanart: Fanart |
166 | + } |
167 | + } |
168 | + } |
169 | + |
170 | + // Document to store the user's tv activity on Trakt |
171 | + U1db.Document { |
172 | + id: showActivityDocument |
173 | + database: db |
174 | + docId: "traktShowActivity" |
175 | + create: true |
176 | + defaults: { "name": "default", "id": "default", "imdb": "default", "episode_title": "default", "season": "default", "number": "default" ,"poster": "default", "fanart": "default" } |
177 | + function setValues(Name, Id, Imdb, Episode_title, Season, number, Poster, Fanart) { |
178 | + showActivityDocument.contents = { |
179 | + name: Name, |
180 | + id: Id, |
181 | + imdb: Imdb, |
182 | + episode_title: Episode_title, |
183 | + season: Season, |
184 | + number: number, |
185 | + poster: Poster, |
186 | + fanart: Fanart |
187 | + } |
188 | + } |
189 | + } |
190 | + |
191 | + // Document to store the user's watchlist activity on Trakt |
192 | + U1db.Document { |
193 | + id: watchlistActivityDocument |
194 | + database: db |
195 | + docId: "traktWatchlistActivity" |
196 | + create: true |
197 | + defaults: { "movie": "default", "show": "default" } |
198 | + } |
199 | + |
200 | + // Document to track user show's episode seen/unseen activity on Trakt |
201 | + U1db.Document { |
202 | + id: episodeSeenActivityDocument |
203 | + database: db |
204 | + docId: "traktEpisodeSeenActivity" |
205 | + create: true |
206 | + defaults: { "episode": "default" } |
207 | + } |
208 | + |
209 | + Loader { id: userActivityLoader } |
210 | + |
211 | + Component { |
212 | + id: userActivity |
213 | + Activity { |
214 | + id: _userActivity |
215 | + |
216 | + username: traktLogin.contents.username |
217 | + password: traktLogin.contents.password |
218 | + |
219 | + onActivityDocumentChanged: { |
220 | + if(activityDocument.type === "movie") { |
221 | + showActivityDocument.setValues("default", "default", "default", "default", "default", "default", "default", "default") |
222 | + movieActivityDocument.setValues(activityDocument.name, activityDocument.id, activityDocument.imdb, activityDocument.runtime, activityDocument.year, activityDocument.trailer, activityDocument.poster, activityDocument.fanart) |
223 | + } |
224 | + else if(activityDocument.type === "episode") { |
225 | + movieActivityDocument.setValues("default", "default", "default", "default", "default", "default", "default", "default") |
226 | + showActivityDocument.setValues(activityDocument.name, activityDocument.id, activityDocument.imdb, activityDocument.episode_title, activityDocument.season, activityDocument.number, activityDocument.poster, activityDocument.fanart) |
227 | + } |
228 | + // If user is not watching anything, set both documents to default |
229 | + else if(activityDocument.type === "default") { |
230 | + movieActivityDocument.setValues("default", "default", "default", "default", "default", "default", "default", "default") |
231 | + showActivityDocument.setValues("default", "default", "default", "default", "default", "default", "default", "default") |
232 | + } |
233 | + } |
234 | + } |
235 | + } |
236 | + |
237 | + PageStack { |
238 | + id: pagestack |
239 | + |
240 | + // Properties to hold the application details which are then used throughout the application for consistency |
241 | + property string app_version: "0.3.3" |
242 | + property string app_name: "Flashback" |
243 | + property string last_updated: "28 March 2014" |
244 | + |
245 | + // Property to hold the trakt account status to allow for detecting account changes after the app is open |
246 | + property string account_status |
247 | + |
248 | + // Property to hold the user movie/show status to allow for activity changes after the app is open |
249 | + property string movieName |
250 | + property string showName |
251 | + |
252 | + Component.onCompleted: { |
253 | + if(String(firstRunDocument.contents.firstrun) === "true") { |
254 | + console.log("[LOG]: Running app for the first time. Opening Walkthrough: " + firstRunDocument.contents.firstrun) |
255 | + push(Qt.resolvedUrl("walkthrough/Walkthrough.qml")); |
256 | + } |
257 | + else |
258 | + push(rootComponent); |
259 | + } |
260 | + |
261 | + Component { |
262 | + id: rootComponent |
263 | + Tabs { |
264 | + id: root |
265 | + |
266 | + onSelectedTabChanged: { |
267 | + if(root.selectedTab == moviesTab) |
268 | + movieLoader.source = Qt.resolvedUrl("ui/MovieTab.qml") |
269 | + else if(root.selectedTab == tvTab) |
270 | + tvLoader.source = Qt.resolvedUrl("ui/TvTab.qml") |
271 | + else if(root.selectedTab == peopleTab) |
272 | + peopleLoader.source = Qt.resolvedUrl("ui/PersonTab.qml") |
273 | + } |
274 | + |
275 | + Tab { |
276 | + id: homeTab |
277 | + title: i18n.tr("Home") |
278 | + page: HomeTab {} |
279 | + } |
280 | + |
281 | + Tab { |
282 | + id: moviesTab |
283 | + title: i18n.tr("Movies") |
284 | + page: Loader { |
285 | + id: movieLoader |
286 | + parent: moviesTab |
287 | + anchors { |
288 | + left: parent.left |
289 | + right: parent.right |
290 | + bottom: parent.bottom |
291 | + } |
292 | + } |
293 | + } |
294 | + |
295 | + Tab { |
296 | + id: tvTab |
297 | + title: i18n.tr("TV") |
298 | + page: Loader { |
299 | + id: tvLoader |
300 | + parent: tvTab |
301 | + anchors { |
302 | + left: parent.left |
303 | + right: parent.right |
304 | + bottom: parent.bottom |
305 | + } |
306 | + } |
307 | + } |
308 | + |
309 | + Tab { |
310 | + id: peopleTab |
311 | + title: i18n.tr("Celeb") |
312 | + page: Loader { |
313 | + id: peopleLoader |
314 | + parent: peopleTab |
315 | + anchors { |
316 | + left: parent.left |
317 | + right: parent.right |
318 | + bottom: parent.bottom |
319 | + } |
320 | + } |
321 | + } |
322 | + } |
323 | + } |
324 | + } |
325 | +} |
326 | |
327 | === renamed file 'Flashback.qml' => 'Flashback.qml.moved' |
328 | === added file 'Flashback.qmlproject' |
329 | --- Flashback.qmlproject 1970-01-01 00:00:00 +0000 |
330 | +++ Flashback.qmlproject 2014-05-14 17:33:57 +0000 |
331 | @@ -0,0 +1,46 @@ |
332 | +/* File generated by Qt Creator (with Ubuntu Plugin), version 2.8.1 */ |
333 | + |
334 | +import QmlProject 1.1 |
335 | + |
336 | +Project { |
337 | + mainFile: "Flashback.qml" |
338 | + |
339 | + /* Include .qml, .js, and image files from current directory and subdirectories */ |
340 | + QmlFiles { |
341 | + directory: "." |
342 | + } |
343 | + JavaScriptFiles { |
344 | + directory: "." |
345 | + } |
346 | + ImageFiles { |
347 | + directory: "." |
348 | + } |
349 | + Files { |
350 | + filter: "*.desktop" |
351 | + } |
352 | + Files { |
353 | + filter: "Makefile" |
354 | + } |
355 | + Files { |
356 | + directory: "html" |
357 | + filter: "*" |
358 | + } |
359 | + Files { |
360 | + directory: "img/" |
361 | + filter: "*" |
362 | + } |
363 | + Files { |
364 | + directory: "css/" |
365 | + filter: "*" |
366 | + } |
367 | + Files { |
368 | + directory: "tests/" |
369 | + filter: "*" |
370 | + } |
371 | + Files { |
372 | + directory: "debian" |
373 | + filter: "*" |
374 | + } |
375 | + /* List of plugin directories passed to QML runtime */ |
376 | + importPaths: [ "." ,"/usr/bin","/usr/lib/x86_64-linux-gnu/qt5/qml" ] |
377 | +} |
378 | |
379 | === renamed file 'Flashback.qmlproject' => 'Flashback.qmlproject.moved' |
380 | === added file 'Makefile' |
381 | --- Makefile 1970-01-01 00:00:00 +0000 |
382 | +++ Makefile 2014-05-14 17:33:57 +0000 |
383 | @@ -0,0 +1,18 @@ |
384 | +# More information: https://wiki.ubuntu.com/Touch/Testing |
385 | +# |
386 | +# Notes for autopilot tests: |
387 | +# ----------------------------------------------------------- |
388 | +# In order to run autopilot tests: |
389 | +# sudo apt-add-repository ppa:autopilot/ppa |
390 | +# sudo apt-get update |
391 | +# sudo apt-get install python-autopilot autopilot-qt |
392 | +############################################################# |
393 | + |
394 | +all: |
395 | + |
396 | +autopilot: |
397 | + chmod +x tests/autopilot/run |
398 | + tests/autopilot/run |
399 | + |
400 | +run: |
401 | + /usr/bin/qmlscene $@ Flashback.qml |
402 | |
403 | === renamed file 'Makefile' => 'Makefile.moved' |
404 | === added directory 'backend' |
405 | === renamed directory 'backend' => 'backend.moved' |
406 | === added file 'backend/backend.js' |
407 | --- backend/backend.js 1970-01-01 00:00:00 +0000 |
408 | +++ backend/backend.js 2014-05-14 17:33:57 +0000 |
409 | @@ -0,0 +1,204 @@ |
410 | +/* |
411 | + * Flashback - Entertainment app for Ubuntu |
412 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
413 | + * |
414 | + * This program is free software: you can redistribute it and/or modify |
415 | + * it under the terms of the GNU General Public License version 3 as |
416 | + * published by the Free Software Foundation. |
417 | + * |
418 | + * This program is distributed in the hope that it will be useful, |
419 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
420 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
421 | + * GNU General Public License for more details. |
422 | + * |
423 | + * You should have received a copy of the GNU General Public License |
424 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
425 | + * |
426 | + */ |
427 | + |
428 | +var credentials = { |
429 | + baseUrl: "http://api.themoviedb.org/3", |
430 | + apiKey: "d0a2929acb64b7c203071e87a621dfb3", |
431 | + trakt_apiKey: "20a7a6b2d0c3b58acbd81841c40355b04b46c475", |
432 | + trakt_baseUrl: "http://api.trakt.tv" |
433 | +} |
434 | + |
435 | +/* |
436 | + Movies |
437 | + */ |
438 | + |
439 | +function nowPlayingMoviesUrl() { |
440 | + return credentials.baseUrl + "/movie/now_playing" + "?api_key=" + credentials.apiKey; |
441 | +} |
442 | + |
443 | +function trendingMoviesUrl() { |
444 | + return credentials.trakt_baseUrl + "/movies/trending.json/" + credentials.trakt_apiKey; |
445 | +} |
446 | + |
447 | +function similarMoviesUrl(movie_id) { |
448 | + return credentials.baseUrl + "/movie/" + movie_id + "/similar_movies" + "?api_key=" + credentials.apiKey; |
449 | +} |
450 | + |
451 | +function upcomingMoviesUrl() { |
452 | + return credentials.baseUrl + "/movie/upcoming" + "?api_key=" + credentials.apiKey; |
453 | +} |
454 | + |
455 | +function topRatedMoviesUrl() { |
456 | + return credentials.baseUrl + "/movie/top_rated" + "?api_key=" + credentials.apiKey; |
457 | +} |
458 | + |
459 | +function movieUrl(movie_id, options) { |
460 | + options = options || {}; |
461 | + var base = credentials.baseUrl + "/movie/"+ movie_id + "?api_key=" + credentials.apiKey; |
462 | + if ( options.appendToResponse ) |
463 | + return base + "&append_to_response=" + options.appendToResponse.join(','); |
464 | + else |
465 | + return base; |
466 | +} |
467 | + |
468 | +function traktMovieUrl(movie_id) { |
469 | + return credentials.trakt_baseUrl + "/movie/summary.json/" + credentials.trakt_apiKey + "/" + movie_id; |
470 | +} |
471 | + |
472 | +function filterByGenreUrl(genre_id) { |
473 | + return credentials.baseUrl + "/genre/" + genre_id + "/movies" + "?api_key=" + credentials.apiKey; |
474 | +} |
475 | + |
476 | +//Genre |
477 | +function genreUrl() { |
478 | + return credentials.baseUrl + "/genre/list" + "?api_key=" + credentials.apiKey; |
479 | +} |
480 | + |
481 | +// Cast |
482 | +function movieCastUrl(movie_id) { |
483 | + return credentials.baseUrl + "/movie/"+ movie_id + "/credits" + "?api_key=" + credentials.apiKey; |
484 | +} |
485 | + |
486 | +// Crew |
487 | +function movieCrewUrl(movie_id) { |
488 | + return credentials.baseUrl + "/movie/"+ movie_id + "/credits" + "?api_key=" + credentials.apiKey; |
489 | +} |
490 | + |
491 | +function trendingShowsUrl() { |
492 | + return credentials.trakt_baseUrl + "/shows/trending.json/" + credentials.trakt_apiKey; |
493 | +} |
494 | + |
495 | +/* |
496 | + TV Shows |
497 | + */ |
498 | + |
499 | +function tvUrl(tv_id) { |
500 | + return credentials.trakt_baseUrl + "/show/summary.json/" + credentials.trakt_apiKey + "/" + tv_id; |
501 | +} |
502 | + |
503 | +function tvSeasons(tv_id) { |
504 | + return credentials.trakt_baseUrl + "/show/seasons.json/" + credentials.trakt_apiKey + "/" + tv_id; |
505 | +} |
506 | + |
507 | +function tvSeasonUrl(tv_id, season_number) { |
508 | + return credentials.trakt_baseUrl + "/show/season.json/" + credentials.trakt_apiKey + "/" + tv_id + "/" + season_number; |
509 | +} |
510 | + |
511 | +function tvEpisodeUrl(tv_id, season_number, episode_number) { |
512 | + return credentials.trakt_baseUrl + "/show/episode/summary.json/" + credentials.trakt_apiKey + "/" + tv_id + "/" + season_number + "/" + episode_number; |
513 | +} |
514 | + |
515 | +/* |
516 | + People |
517 | + */ |
518 | + |
519 | +function popularPeopleUrl() { |
520 | + return credentials.baseUrl + "/person/popular" + "?api_key=" + credentials.apiKey; |
521 | +} |
522 | + |
523 | +function personUrl(person_id, options) { |
524 | + options = options || {}; |
525 | + var base = credentials.baseUrl + "/person/"+ person_id + "?api_key=" + credentials.apiKey; |
526 | + if ( options.appendToResponse ) |
527 | + return base + "&append_to_response=" + options.appendToResponse.join(','); |
528 | + else |
529 | + return base; |
530 | +} |
531 | + |
532 | +/* |
533 | + Search - Movies, TV and People |
534 | + */ |
535 | + |
536 | +function searchUrl(type, term) { |
537 | + if(type === "tv") |
538 | + return credentials.trakt_baseUrl + "/search/shows.json/" + credentials.trakt_apiKey + "?query=" + encodeURIComponent(term); |
539 | + else |
540 | + return credentials.baseUrl + "/search/"+ type + "?api_key=" + credentials.apiKey + "&query=" + encodeURIComponent(term); |
541 | +} |
542 | + |
543 | +/* |
544 | + Trakt Services - Check-in, comments, user subscribed shows etc |
545 | + */ |
546 | + |
547 | +function traktVerifyUrl() { |
548 | + return credentials.trakt_baseUrl + "/account/test/" + credentials.trakt_apiKey |
549 | +} |
550 | + |
551 | +function traktCreateAccount() { |
552 | + return credentials.trakt_baseUrl + "/account/create/" + credentials.trakt_apiKey |
553 | +} |
554 | + |
555 | +function userActivity(username) { |
556 | + return credentials.trakt_baseUrl + "/user/watching.json/" + credentials.trakt_apiKey + "/" + username |
557 | +} |
558 | + |
559 | +function recommendedMoviesUrl() { |
560 | + return credentials.trakt_baseUrl + "/recommendations/movies/" + credentials.trakt_apiKey |
561 | +} |
562 | + |
563 | +function traktAddRatingUrl(type) { |
564 | + return credentials.trakt_baseUrl + "/rate/" + type + "/" + credentials.trakt_apiKey |
565 | +} |
566 | + |
567 | +function traktAddCommentUrl(type) { |
568 | + return credentials.trakt_baseUrl + "/comment/" + type + "/" + credentials.trakt_apiKey |
569 | +} |
570 | + |
571 | +function traktCommentsUrl(type, id) { |
572 | + return credentials.trakt_baseUrl + "/" + type + "/comments.json/" + credentials.trakt_apiKey + "/" + id |
573 | +} |
574 | + |
575 | +function traktEpisodeCommentsUrl(id, season, episode) { |
576 | + return credentials.trakt_baseUrl + "/show/episode/comments.json/" + credentials.trakt_apiKey + "/" + id + "/" + season + "/" + episode |
577 | +} |
578 | + |
579 | +function traktCheckInUrl(type) { |
580 | + return credentials.trakt_baseUrl + "/" + type + "/checkin/" + credentials.trakt_apiKey |
581 | +} |
582 | + |
583 | +function cancelTraktCheckIn(type) { |
584 | + return credentials.trakt_baseUrl + "/" + type + "/cancelcheckin/" + credentials.trakt_apiKey |
585 | +} |
586 | + |
587 | +function traktSeenUrl(type) { |
588 | + return credentials.trakt_baseUrl + "/" + type + "/seen/" + credentials.trakt_apiKey |
589 | +} |
590 | + |
591 | +function cancelTraktSeen(type) { |
592 | + return credentials.trakt_baseUrl + "/" + type + "/unseen/" + credentials.trakt_apiKey |
593 | +} |
594 | + |
595 | +function userShowWatchlist(username) { |
596 | + return credentials.trakt_baseUrl + "/user/watchlist/shows.json/" + credentials.trakt_apiKey + "/" + username |
597 | +} |
598 | + |
599 | +function userShows(username, startDate, noOfDays) { |
600 | + return credentials.trakt_baseUrl + "/user/calendar/shows.json/" + credentials.trakt_apiKey + "/" + username + "/" + startDate + "/" + noOfDays |
601 | +} |
602 | + |
603 | +function traktWatchlistUrl(type) { |
604 | + return credentials.trakt_baseUrl + "/" + type + "/watchlist/" + credentials.trakt_apiKey |
605 | +} |
606 | + |
607 | +function traktUnwatchlistUrl(type) { |
608 | + return credentials.trakt_baseUrl + "/" + type + "/unwatchlist/" + credentials.trakt_apiKey |
609 | +} |
610 | + |
611 | +function userWatchlistMovies(username) { |
612 | + return credentials.trakt_baseUrl + "/user/watchlist/movies.json/" + credentials.trakt_apiKey + "/" + username |
613 | +} |
614 | |
615 | === added file 'backend/sha1.js' |
616 | --- backend/sha1.js 1970-01-01 00:00:00 +0000 |
617 | +++ backend/sha1.js 2014-05-14 17:33:57 +0000 |
618 | @@ -0,0 +1,202 @@ |
619 | +/* |
620 | + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined |
621 | + * in FIPS PUB 180-1 |
622 | + * Version 2.1a Copyright Paul Johnston 2000 - 2002. |
623 | + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet |
624 | + * Distributed under the BSD License |
625 | + * See http://pajhome.org.uk/crypt/md5 for details. |
626 | + */ |
627 | + |
628 | +/* |
629 | + * Configurable variables. You may need to tweak these to be compatible with |
630 | + * the server-side, but the defaults work in most cases. |
631 | + */ |
632 | +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ |
633 | +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ |
634 | +var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ |
635 | + |
636 | +/* |
637 | + * These are the functions you'll usually want to call |
638 | + * They take string arguments and return either hex or base-64 encoded strings |
639 | + */ |
640 | +function sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));} |
641 | +function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));} |
642 | +function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));} |
643 | +function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));} |
644 | +function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));} |
645 | +function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));} |
646 | + |
647 | +/* |
648 | + * Perform a simple self-test to see if the VM is working |
649 | + */ |
650 | +function sha1_vm_test() |
651 | +{ |
652 | + return sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d"; |
653 | +} |
654 | + |
655 | +/* |
656 | + * Calculate the SHA-1 of an array of big-endian words, and a bit length |
657 | + */ |
658 | +function core_sha1(x, len) |
659 | +{ |
660 | + /* append padding */ |
661 | + x[len >> 5] |= 0x80 << (24 - len % 32); |
662 | + x[((len + 64 >> 9) << 4) + 15] = len; |
663 | + |
664 | + var w = Array(80); |
665 | + var a = 1732584193; |
666 | + var b = -271733879; |
667 | + var c = -1732584194; |
668 | + var d = 271733878; |
669 | + var e = -1009589776; |
670 | + |
671 | + for(var i = 0; i < x.length; i += 16) |
672 | + { |
673 | + var olda = a; |
674 | + var oldb = b; |
675 | + var oldc = c; |
676 | + var oldd = d; |
677 | + var olde = e; |
678 | + |
679 | + for(var j = 0; j < 80; j++) |
680 | + { |
681 | + if(j < 16) w[j] = x[i + j]; |
682 | + else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); |
683 | + var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), |
684 | + safe_add(safe_add(e, w[j]), sha1_kt(j))); |
685 | + e = d; |
686 | + d = c; |
687 | + c = rol(b, 30); |
688 | + b = a; |
689 | + a = t; |
690 | + } |
691 | + |
692 | + a = safe_add(a, olda); |
693 | + b = safe_add(b, oldb); |
694 | + c = safe_add(c, oldc); |
695 | + d = safe_add(d, oldd); |
696 | + e = safe_add(e, olde); |
697 | + } |
698 | + return Array(a, b, c, d, e); |
699 | + |
700 | +} |
701 | + |
702 | +/* |
703 | + * Perform the appropriate triplet combination function for the current |
704 | + * iteration |
705 | + */ |
706 | +function sha1_ft(t, b, c, d) |
707 | +{ |
708 | + if(t < 20) return (b & c) | ((~b) & d); |
709 | + if(t < 40) return b ^ c ^ d; |
710 | + if(t < 60) return (b & c) | (b & d) | (c & d); |
711 | + return b ^ c ^ d; |
712 | +} |
713 | + |
714 | +/* |
715 | + * Determine the appropriate additive constant for the current iteration |
716 | + */ |
717 | +function sha1_kt(t) |
718 | +{ |
719 | + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : |
720 | + (t < 60) ? -1894007588 : -899497514; |
721 | +} |
722 | + |
723 | +/* |
724 | + * Calculate the HMAC-SHA1 of a key and some data |
725 | + */ |
726 | +function core_hmac_sha1(key, data) |
727 | +{ |
728 | + var bkey = str2binb(key); |
729 | + if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz); |
730 | + |
731 | + var ipad = Array(16), opad = Array(16); |
732 | + for(var i = 0; i < 16; i++) |
733 | + { |
734 | + ipad[i] = bkey[i] ^ 0x36363636; |
735 | + opad[i] = bkey[i] ^ 0x5C5C5C5C; |
736 | + } |
737 | + |
738 | + var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz); |
739 | + return core_sha1(opad.concat(hash), 512 + 160); |
740 | +} |
741 | + |
742 | +/* |
743 | + * Add integers, wrapping at 2^32. This uses 16-bit operations internally |
744 | + * to work around bugs in some JS interpreters. |
745 | + */ |
746 | +function safe_add(x, y) |
747 | +{ |
748 | + var lsw = (x & 0xFFFF) + (y & 0xFFFF); |
749 | + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); |
750 | + return (msw << 16) | (lsw & 0xFFFF); |
751 | +} |
752 | + |
753 | +/* |
754 | + * Bitwise rotate a 32-bit number to the left. |
755 | + */ |
756 | +function rol(num, cnt) |
757 | +{ |
758 | + return (num << cnt) | (num >>> (32 - cnt)); |
759 | +} |
760 | + |
761 | +/* |
762 | + * Convert an 8-bit or 16-bit string to an array of big-endian words |
763 | + * In 8-bit function, characters >255 have their hi-byte silently ignored. |
764 | + */ |
765 | +function str2binb(str) |
766 | +{ |
767 | + var bin = Array(); |
768 | + var mask = (1 << chrsz) - 1; |
769 | + for(var i = 0; i < str.length * chrsz; i += chrsz) |
770 | + bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32); |
771 | + return bin; |
772 | +} |
773 | + |
774 | +/* |
775 | + * Convert an array of big-endian words to a string |
776 | + */ |
777 | +function binb2str(bin) |
778 | +{ |
779 | + var str = ""; |
780 | + var mask = (1 << chrsz) - 1; |
781 | + for(var i = 0; i < bin.length * 32; i += chrsz) |
782 | + str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask); |
783 | + return str; |
784 | +} |
785 | + |
786 | +/* |
787 | + * Convert an array of big-endian words to a hex string. |
788 | + */ |
789 | +function binb2hex(binarray) |
790 | +{ |
791 | + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; |
792 | + var str = ""; |
793 | + for(var i = 0; i < binarray.length * 4; i++) |
794 | + { |
795 | + str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + |
796 | + hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); |
797 | + } |
798 | + return str; |
799 | +} |
800 | + |
801 | +/* |
802 | + * Convert an array of big-endian words to a base-64 string |
803 | + */ |
804 | +function binb2b64(binarray) |
805 | +{ |
806 | + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; |
807 | + var str = ""; |
808 | + for(var i = 0; i < binarray.length * 4; i += 3) |
809 | + { |
810 | + var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) |
811 | + | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) |
812 | + | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF); |
813 | + for(var j = 0; j < 4; j++) |
814 | + { |
815 | + if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; |
816 | + else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); |
817 | + } |
818 | + } |
819 | + return str; |
820 | +} |
821 | |
822 | === added directory 'components' |
823 | === renamed directory 'components' => 'components.moved' |
824 | === added file 'components/BlurredBackground.qml' |
825 | --- components/BlurredBackground.qml 1970-01-01 00:00:00 +0000 |
826 | +++ components/BlurredBackground.qml 2014-05-14 17:33:57 +0000 |
827 | @@ -0,0 +1,50 @@ |
828 | +/* |
829 | + * Flashback - Entertainment app for Ubuntu |
830 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
831 | + * |
832 | + * This program is free software: you can redistribute it and/or modify |
833 | + * it under the terms of the GNU General Public License version 3 as |
834 | + * published by the Free Software Foundation. |
835 | + * |
836 | + * This program is distributed in the hope that it will be useful, |
837 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
838 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
839 | + * GNU General Public License for more details. |
840 | + * |
841 | + * You should have received a copy of the GNU General Public License |
842 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
843 | + * |
844 | + */ |
845 | + |
846 | +import QtQuick 2.0 |
847 | +import Ubuntu.Components 0.1 |
848 | +import QtGraphicalEffects 1.0 |
849 | + |
850 | +Rectangle { |
851 | + id: blurredBackground |
852 | + |
853 | + property alias background: backgroundImage.source |
854 | + |
855 | + anchors.fill: parent |
856 | + z: -1 |
857 | + |
858 | + // Background Image |
859 | + Image { |
860 | + id: backgroundImage |
861 | + anchors.fill: parent |
862 | + } |
863 | + |
864 | + // Element to blur the background image |
865 | + FastBlur { |
866 | + anchors.fill: backgroundImage |
867 | + source: backgroundImage |
868 | + radius: units.gu(8) |
869 | + } |
870 | + |
871 | + // Element to add a black curtain (dimmer) to increase the readiblity of the text |
872 | + Rectangle { |
873 | + color: "black" |
874 | + opacity: 0.7 |
875 | + anchors.fill: parent |
876 | + } |
877 | +} |
878 | |
879 | === added file 'components/Carousel.qml' |
880 | --- components/Carousel.qml 1970-01-01 00:00:00 +0000 |
881 | +++ components/Carousel.qml 2014-05-14 17:33:57 +0000 |
882 | @@ -0,0 +1,125 @@ |
883 | +/* |
884 | + * Flashback - Entertainment app for Ubuntu |
885 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
886 | + * |
887 | + * This program is free software: you can redistribute it and/or modify |
888 | + * it under the terms of the GNU General Public License version 3 as |
889 | + * published by the Free Software Foundation. |
890 | + * |
891 | + * This program is distributed in the hope that it will be useful, |
892 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
893 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
894 | + * GNU General Public License for more details. |
895 | + * |
896 | + * You should have received a copy of the GNU General Public License |
897 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
898 | + * |
899 | + */ |
900 | + |
901 | +import QtQuick 2.0 |
902 | +import Ubuntu.Components 0.1 |
903 | +import Ubuntu.Components.ListItems 0.1 |
904 | + |
905 | +/* |
906 | + The carousel is an element which displays a header title with a flickable row of ubuntu shape thumbnails. |
907 | + */ |
908 | +Column { |
909 | + id: carousel |
910 | + |
911 | + // Header Title |
912 | + property alias header: header.text |
913 | + |
914 | + // Carousel Data Model |
915 | + property alias dataModel: carouselList.model |
916 | + |
917 | + // Carousel Thumbnail size (On the phone, show 2 + 2/3 cover art always by dynamically adjusting the size) |
918 | + property real size: parent.width < units.gu(50) ? (3 * (parent.width - 2*carouselList.spacing))/8 : units.gu(17) |
919 | + |
920 | + // Property to hold the watched status |
921 | + property bool showTraktUserStatus: false |
922 | + |
923 | + // Signal triggered when a thumb |
924 | + signal thumbClicked(var model) |
925 | + |
926 | + width: parent.width |
927 | + spacing: units.gu(1) |
928 | + /* |
929 | + WORKAROUND: Due to bug https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1300668, the opacity and height are used |
930 | + to show/hide the carousel. Previously the declaration was, |
931 | + |
932 | + visible: carouselList.model.count > 0 |
933 | + height: header.height + carouselList.height |
934 | + */ |
935 | + opacity: carouselList.model.count > 0 ? 1 : 0 |
936 | + height: opacity === 1 ? header.height + carouselList.height : 0 |
937 | + |
938 | + Behavior on height { |
939 | + UbuntuNumberAnimation {} |
940 | + } |
941 | + |
942 | + Header { |
943 | + id: header |
944 | + text: i18n.tr("Default Header Title") |
945 | + } |
946 | + |
947 | + ListView { |
948 | + id: carouselList |
949 | + |
950 | + width: parent.width |
951 | + height: 1.5*carousel.size + units.gu(5) |
952 | + orientation: Qt.Horizontal |
953 | + spacing: units.gu(2) |
954 | + |
955 | + // Element consists of a Picture and a text label below it. |
956 | + delegate: Item { |
957 | + id: thumbContainer |
958 | + |
959 | + width: carousel.size |
960 | + height: thumbColumn.height |
961 | + |
962 | + StatusIcons { |
963 | + id: traktStatusContainer |
964 | + |
965 | + showWatchedIcon: traktStatusContainer.visible ? watched ? (watched === "true" ? true : false) : false : false |
966 | + showWatchListIcon: traktStatusContainer.visible ? watchlist ? (watchlist === "true" ? true : false) : false : false |
967 | + visible: carousel.showTraktUserStatus |
968 | + |
969 | + anchors { |
970 | + top: parent.top |
971 | + left: parent.left |
972 | + } |
973 | + } |
974 | + |
975 | + Column { |
976 | + id: thumbColumn |
977 | + spacing: units.gu(0.5) |
978 | + |
979 | + // Widget to curve edges and encase the thumbnail |
980 | + Thumbnail { |
981 | + id: carouselThumb |
982 | + width: carousel.size |
983 | + height: 1.5*carousel.size |
984 | + thumbSource: thumb_url |
985 | + } |
986 | + |
987 | + // Label showing the movie/tv show name |
988 | + Label { |
989 | + id: carouselThumbDescription |
990 | + |
991 | + text: name |
992 | + maximumLineCount: 2 |
993 | + elide: Text.ElideRight |
994 | + wrapMode: Text.WordWrap |
995 | + width: carouselThumb.width |
996 | + horizontalAlignment: Text.AlignHCenter |
997 | + } |
998 | + } |
999 | + |
1000 | + MouseArea { |
1001 | + anchors.fill: parent |
1002 | + onClicked: carousel.thumbClicked(model) |
1003 | + } |
1004 | + } |
1005 | + } |
1006 | +} |
1007 | + |
1008 | |
1009 | === added file 'components/DesaturatedThumbnail.qml' |
1010 | --- components/DesaturatedThumbnail.qml 1970-01-01 00:00:00 +0000 |
1011 | +++ components/DesaturatedThumbnail.qml 2014-05-14 17:33:57 +0000 |
1012 | @@ -0,0 +1,60 @@ |
1013 | +/* |
1014 | + * Flashback - Entertainment app for Ubuntu |
1015 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
1016 | + * |
1017 | + * This program is free software: you can redistribute it and/or modify |
1018 | + * it under the terms of the GNU General Public License version 3 as |
1019 | + * published by the Free Software Foundation. |
1020 | + * |
1021 | + * This program is distributed in the hope that it will be useful, |
1022 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1023 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1024 | + * GNU General Public License for more details. |
1025 | + * |
1026 | + * You should have received a copy of the GNU General Public License |
1027 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1028 | + * |
1029 | + */ |
1030 | + |
1031 | +import QtQuick 2.0 |
1032 | +import Ubuntu.Components 0.1 |
1033 | +import QtGraphicalEffects 1.0 |
1034 | + |
1035 | +/* |
1036 | + Component to wrap up an image in a ubuntu shape container and desaturate it. This is very similar to the |
1037 | + Thumbnail component except with the desaturation. |
1038 | + */ |
1039 | +UbuntuShape { |
1040 | + id: desaturatedThumb |
1041 | + |
1042 | + property alias thumbSource: thumbPic.source |
1043 | + property alias ready: loading.running |
1044 | + |
1045 | + image: Image { |
1046 | + id: thumbPic |
1047 | + fillMode: Image.PreserveAspectFit |
1048 | + visible: false |
1049 | + } |
1050 | + |
1051 | + HueSaturation { |
1052 | + id: saturated |
1053 | + anchors.fill: parent |
1054 | + source: thumbPic |
1055 | + hue: 0 |
1056 | + saturation: -1.0 |
1057 | + lightness: 0 |
1058 | + visible: false |
1059 | + } |
1060 | + |
1061 | + OpacityMask { |
1062 | + anchors.fill: saturated |
1063 | + source: saturated |
1064 | + maskSource: desaturatedThumb |
1065 | + } |
1066 | + |
1067 | + ActivityIndicator { |
1068 | + id: loading |
1069 | + running: thumbPic.status != Image.Ready |
1070 | + anchors.centerIn: parent |
1071 | + } |
1072 | +} |
1073 | |
1074 | === added file 'components/DetailCarousel.qml' |
1075 | --- components/DetailCarousel.qml 1970-01-01 00:00:00 +0000 |
1076 | +++ components/DetailCarousel.qml 2014-05-14 17:33:57 +0000 |
1077 | @@ -0,0 +1,192 @@ |
1078 | +/* |
1079 | + * Flashback - Entertainment app for Ubuntu |
1080 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
1081 | + * |
1082 | + * This program is free software: you can redistribute it and/or modify |
1083 | + * it under the terms of the GNU General Public License version 3 as |
1084 | + * published by the Free Software Foundation. |
1085 | + * |
1086 | + * This program is distributed in the hope that it will be useful, |
1087 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1088 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1089 | + * GNU General Public License for more details. |
1090 | + * |
1091 | + * You should have received a copy of the GNU General Public License |
1092 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1093 | + * |
1094 | + */ |
1095 | + |
1096 | +import QtQuick 2.0 |
1097 | +import Ubuntu.Components 0.1 |
1098 | +import Ubuntu.Components.ListItems 0.1 |
1099 | + |
1100 | +/* |
1101 | + The Detail Carousel is very similar to Carousel. It shows additional information such as Episode title, |
1102 | + season and episode number and the release date. This carousel is primarily for displaying tv shows. |
1103 | + */ |
1104 | +Column { |
1105 | + id: _detailCarousel |
1106 | + |
1107 | + // Header Title |
1108 | + property alias header: _header.text |
1109 | + |
1110 | + // Carousel Data Model |
1111 | + property alias dataModel: _carouselList.model |
1112 | + |
1113 | + // Carousel Thumbnail size (On the phone, show 2 + 2/3 cover art always by dynamically adjusting the size) |
1114 | + property int size: parent.width < units.gu(50) ? (3 * (parent.width - 2*_carouselList.spacing))/8 : units.gu(17) |
1115 | + |
1116 | + // Property to show/hide date |
1117 | + property bool showDate: true |
1118 | + |
1119 | + // Signal triggered when a thumb |
1120 | + signal thumbClicked(var model) |
1121 | + |
1122 | + width: parent.width |
1123 | + spacing: units.gu(1) |
1124 | + /* |
1125 | + WORKAROUND: Due to bug https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1300668, the opacity and height are used |
1126 | + to show/hide the carousel. Previously the declaration was, |
1127 | + |
1128 | + visible: _carouselList.model.count > 0 |
1129 | + height: _header.height + _carouselList.height |
1130 | + */ |
1131 | + opacity: _carouselList.model.count > 0 ? 1 : 0 |
1132 | + height: opacity === 1 ? _header.height + _carouselList.height : 0 |
1133 | + |
1134 | + Header { |
1135 | + id: _header |
1136 | + text: i18n.tr("Default Header Title") |
1137 | + } |
1138 | + |
1139 | + ListView { |
1140 | + id: _carouselList |
1141 | + |
1142 | + width: parent.width |
1143 | + height: 1.5*_detailCarousel.size + units.gu(5) |
1144 | + orientation: Qt.Horizontal |
1145 | + spacing: units.gu(2) |
1146 | + |
1147 | + // Element consists of a Picture and a text label below it. |
1148 | + delegate: Item { |
1149 | + id: _carouselItem |
1150 | + width: _detailCarousel.size |
1151 | + height: _thumbColumn.height |
1152 | + |
1153 | + Column { |
1154 | + id: _thumbColumn |
1155 | + spacing: units.gu(0.5) |
1156 | + |
1157 | + // Widget to curve edges and encase the thumbnail |
1158 | + Thumbnail { |
1159 | + id: _carouselThumb |
1160 | + radius: "medium" |
1161 | + width: _detailCarousel.size |
1162 | + height: 1.5*_detailCarousel.size |
1163 | + thumbSource: thumb_url |
1164 | + |
1165 | + Item { |
1166 | + id: bottomContainer |
1167 | + clip: true |
1168 | + height: parent.height/5 |
1169 | + anchors { |
1170 | + left: parent.left |
1171 | + right: parent.right |
1172 | + bottom: parent.bottom |
1173 | + } |
1174 | + |
1175 | + UbuntuShape { |
1176 | + id: detailsContainer |
1177 | + height: _carouselThumb.height |
1178 | + anchors { |
1179 | + bottom: parent.bottom |
1180 | + left: parent.left |
1181 | + right: parent.right |
1182 | + } |
1183 | + radius: "medium" |
1184 | + color: Qt.rgba(0,0,0,0.8) |
1185 | + } |
1186 | + |
1187 | + Column { |
1188 | + id: detailsColumn |
1189 | + anchors { |
1190 | + left: parent.left |
1191 | + right: parent.right |
1192 | + verticalCenter: parent.verticalCenter |
1193 | + margins: units.gu(1) |
1194 | + } |
1195 | + |
1196 | + // Label showing the tv episode name |
1197 | + Label { |
1198 | + id: _episodeTitle |
1199 | + text: episode_name |
1200 | + elide: Text.ElideRight |
1201 | + font.bold: true |
1202 | + anchors { |
1203 | + left: parent.left |
1204 | + right: parent.right |
1205 | + } |
1206 | + } |
1207 | + |
1208 | + // Container to hold the tv show season number and release date |
1209 | + Item { |
1210 | + height: childrenRect.height |
1211 | + anchors { |
1212 | + left: parent.left |
1213 | + right: parent.right |
1214 | + } |
1215 | + |
1216 | + Label { |
1217 | + id: _seasonDetail |
1218 | + text: "S" + season + "E" + episode |
1219 | + width: parent.width * (2/5) |
1220 | + elide: Text.ElideRight |
1221 | + fontSize: "small" |
1222 | + anchors.left: parent.left |
1223 | + } |
1224 | + |
1225 | + Label { |
1226 | + id: _seasonDate |
1227 | + |
1228 | + font.bold: true |
1229 | + fontSize: "small" |
1230 | + color: "LightGreen" |
1231 | + visible: showDate |
1232 | + text: get_date(episode_air_date) |
1233 | + elide: Text.ElideRight |
1234 | + width: parent.width * (3/5) |
1235 | + anchors.right: parent.right |
1236 | + horizontalAlignment: Text.AlignRight |
1237 | + |
1238 | + function get_date(iso) { |
1239 | + var date, month |
1240 | + date = iso.split('T')[0].split('-') |
1241 | + month = Qt.locale().standaloneMonthName(date[1] - 1, Locale.ShortFormat) |
1242 | + return date[2] + " " + month |
1243 | + } |
1244 | + } |
1245 | + } |
1246 | + } |
1247 | + } |
1248 | + } |
1249 | + |
1250 | + // Label showing the tv show name |
1251 | + Label { |
1252 | + id: _carouselThumbDescription |
1253 | + text: name |
1254 | + maximumLineCount: 2 |
1255 | + elide: Text.ElideRight |
1256 | + wrapMode: Text.WordWrap |
1257 | + width: _carouselThumb.width |
1258 | + horizontalAlignment: Text.AlignHCenter |
1259 | + } |
1260 | + } |
1261 | + |
1262 | + MouseArea { |
1263 | + anchors.fill: parent |
1264 | + onClicked: _detailCarousel.thumbClicked(model) |
1265 | + } |
1266 | + } |
1267 | + } |
1268 | +} |
1269 | + |
1270 | |
1271 | === added file 'components/Development.qml' |
1272 | --- components/Development.qml 1970-01-01 00:00:00 +0000 |
1273 | +++ components/Development.qml 2014-05-14 17:33:57 +0000 |
1274 | @@ -0,0 +1,25 @@ |
1275 | +/* |
1276 | + * Flashback - Entertainment app for Ubuntu |
1277 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
1278 | + * |
1279 | + * This program is free software: you can redistribute it and/or modify |
1280 | + * it under the terms of the GNU General Public License version 3 as |
1281 | + * published by the Free Software Foundation. |
1282 | + * |
1283 | + * This program is distributed in the hope that it will be useful, |
1284 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1285 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1286 | + * GNU General Public License for more details. |
1287 | + * |
1288 | + * You should have received a copy of the GNU General Public License |
1289 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1290 | + * |
1291 | + */ |
1292 | + |
1293 | +import QtQuick 2.0 |
1294 | +import Ubuntu.Components 0.1 |
1295 | + |
1296 | +Label{ |
1297 | + text: i18n.tr("Still in development") |
1298 | + color: Theme.palette.normal.baseText |
1299 | +} |
1300 | |
1301 | === added file 'components/Grid.qml' |
1302 | --- components/Grid.qml 1970-01-01 00:00:00 +0000 |
1303 | +++ components/Grid.qml 2014-05-14 17:33:57 +0000 |
1304 | @@ -0,0 +1,278 @@ |
1305 | +/* |
1306 | + * Flashback - Entertainment app for Ubuntu |
1307 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
1308 | + * |
1309 | + * This program is free software: you can redistribute it and/or modify |
1310 | + * it under the terms of the GNU General Public License version 3 as |
1311 | + * published by the Free Software Foundation. |
1312 | + * |
1313 | + * This program is distributed in the hope that it will be useful, |
1314 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1315 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1316 | + * GNU General Public License for more details. |
1317 | + * |
1318 | + * You should have received a copy of the GNU General Public License |
1319 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1320 | + * |
1321 | + */ |
1322 | + |
1323 | +import QtQuick 2.0 |
1324 | +import Ubuntu.Components 0.1 |
1325 | +import Ubuntu.Components.ListItems 0.1 |
1326 | + |
1327 | +Item { |
1328 | + id: grid |
1329 | + |
1330 | + // Property to choose the grid type |
1331 | + property string gridType: "gridCarousel" |
1332 | + |
1333 | + // Property to show/hide date |
1334 | + property bool showDate: true |
1335 | + |
1336 | + // Header Title |
1337 | + property alias header: header.text |
1338 | + |
1339 | + // Grid Data Model |
1340 | + property alias dataModel: gridView.model |
1341 | + |
1342 | + // Grid Thumbnail size |
1343 | + property int size: { |
1344 | + if (width >= units.gu(170)) |
1345 | + return (width - 9*container.spacing)/8 |
1346 | + if (width >= units.gu(150)) |
1347 | + return (width - 8*container.spacing)/7 |
1348 | + else if (width >= units.gu(130)) |
1349 | + return (width - 7*container.spacing)/6 |
1350 | + else if (tabletLandscapeForm || width > units.gu(100)) |
1351 | + return (width - 6*container.spacing)/5 |
1352 | + else if (width > units.gu(80)) |
1353 | + return (width - 5*container.spacing)/4 |
1354 | + else if (width >= units.gu(60)) |
1355 | + return (width - 4*container.spacing)/3 |
1356 | + else |
1357 | + return (width - 3*container.spacing)/2 |
1358 | + } |
1359 | + |
1360 | + // Grid Thumbnail height |
1361 | + property int gridHeight: 1.5*size |
1362 | + |
1363 | + // Signal triggered when a thumb |
1364 | + signal thumbClicked(var model) |
1365 | + |
1366 | + width: parent.width |
1367 | + visible: gridView.model.count > 0 |
1368 | + |
1369 | + Column { |
1370 | + id: container |
1371 | + |
1372 | + spacing: units.gu(3) |
1373 | + anchors { |
1374 | + fill: parent |
1375 | + leftMargin: units.gu(3) |
1376 | + topMargin: units.gu(2) |
1377 | + } |
1378 | + |
1379 | + Header { |
1380 | + id: header |
1381 | + text: "Default Header Title" |
1382 | + visible: text !== "Default Header Title" |
1383 | + anchors { |
1384 | + left: parent.left |
1385 | + right: parent.right |
1386 | + margins: -units.gu(3) |
1387 | + } |
1388 | + } |
1389 | + |
1390 | + Component { |
1391 | + id: gridCarouselDelegate |
1392 | + Item { |
1393 | + id: thumbContainer |
1394 | + |
1395 | + width: grid.size |
1396 | + height: grid.gridHeight + units.gu(5) |
1397 | + |
1398 | + Column { |
1399 | + id: thumbColumn |
1400 | + spacing: units.gu(0.5) |
1401 | + anchors.fill: parent |
1402 | + |
1403 | + // Widget to curve edges and encase the thumbnail |
1404 | + Thumbnail { |
1405 | + id: gridThumb |
1406 | + radius: "small" |
1407 | + width: grid.size |
1408 | + height: grid.gridHeight |
1409 | + thumbSource: thumb_url |
1410 | + |
1411 | + MouseArea { |
1412 | + anchors.fill: parent |
1413 | + onClicked: grid.thumbClicked(model) |
1414 | + } |
1415 | + } |
1416 | + |
1417 | + // Label showing the movie/tv show name |
1418 | + Label { |
1419 | + id: gridThumbDescription |
1420 | + |
1421 | + text: name |
1422 | + maximumLineCount: 2 |
1423 | + visible: !tabletPortraitForm && !tabletLandscapeForm |
1424 | + elide: Text.ElideRight |
1425 | + wrapMode: Text.WordWrap |
1426 | + width: gridThumb.width |
1427 | + horizontalAlignment: Text.AlignHCenter |
1428 | + |
1429 | + MouseArea { |
1430 | + anchors.fill: parent |
1431 | + onClicked: grid.thumbClicked(model) |
1432 | + } |
1433 | + } |
1434 | + } |
1435 | + } |
1436 | + } |
1437 | + |
1438 | + Component { |
1439 | + id: gridDetailedCarouselDelegate |
1440 | + Item { |
1441 | + id: thumbContainer |
1442 | + |
1443 | + width: grid.size |
1444 | + height: grid.gridHeight + units.gu(5) |
1445 | + |
1446 | + Column { |
1447 | + id: thumbColumn |
1448 | + spacing: units.gu(0.5) |
1449 | + anchors.fill: parent |
1450 | + |
1451 | + // Widget to curve edges and encase the thumbnail |
1452 | + Thumbnail { |
1453 | + id: gridThumb |
1454 | + radius: "small" |
1455 | + width: grid.size |
1456 | + height: grid.gridHeight |
1457 | + thumbSource: thumb_url |
1458 | + |
1459 | + MouseArea { |
1460 | + anchors.fill: parent |
1461 | + onClicked: grid.thumbClicked(model) |
1462 | + } |
1463 | + |
1464 | + Item { |
1465 | + id: bottomContainer |
1466 | + clip: true |
1467 | + height: parent.height/5 |
1468 | + anchors { |
1469 | + left: parent.left |
1470 | + right: parent.right |
1471 | + bottom: parent.bottom |
1472 | + } |
1473 | + |
1474 | + UbuntuShape { |
1475 | + id: detailsContainer |
1476 | + height: gridThumb.height |
1477 | + anchors { |
1478 | + bottom: parent.bottom |
1479 | + left: parent.left |
1480 | + right: parent.right |
1481 | + } |
1482 | + radius: "medium" |
1483 | + color: Qt.rgba(0,0,0,0.8) |
1484 | + } |
1485 | + |
1486 | + Column { |
1487 | + id: detailsColumn |
1488 | + anchors { |
1489 | + left: parent.left |
1490 | + right: parent.right |
1491 | + verticalCenter: parent.verticalCenter |
1492 | + margins: units.gu(1) |
1493 | + } |
1494 | + |
1495 | + // Label showing the tv episode name |
1496 | + Label { |
1497 | + id: _episodeTitle |
1498 | + text: episode_name |
1499 | + elide: Text.ElideRight |
1500 | + font.bold: true |
1501 | + anchors { |
1502 | + left: parent.left |
1503 | + right: parent.right |
1504 | + } |
1505 | + } |
1506 | + |
1507 | + // Container to hold the tv show season number and release date |
1508 | + Item { |
1509 | + height: childrenRect.height |
1510 | + anchors { |
1511 | + left: parent.left |
1512 | + right: parent.right |
1513 | + } |
1514 | + |
1515 | + Label { |
1516 | + id: _seasonDetail |
1517 | + text: "S" + season + "E" + episode |
1518 | + width: parent.width * (2/5) |
1519 | + elide: Text.ElideRight |
1520 | + fontSize: "small" |
1521 | + anchors.left: parent.left |
1522 | + } |
1523 | + |
1524 | + Label { |
1525 | + id: _seasonDate |
1526 | + |
1527 | + font.bold: true |
1528 | + fontSize: "small" |
1529 | + color: "LightGreen" |
1530 | + visible: showDate |
1531 | + text: get_date(episode_air_date) |
1532 | + elide: Text.ElideRight |
1533 | + width: parent.width * (3/5) |
1534 | + anchors.right: parent.right |
1535 | + horizontalAlignment: Text.AlignRight |
1536 | + |
1537 | + function get_date(iso) { |
1538 | + var date, month |
1539 | + date = iso.split('T')[0].split('-') |
1540 | + month = Qt.locale().standaloneMonthName(date[1] - 1, Locale.ShortFormat) |
1541 | + return date[2] + " " + month |
1542 | + } |
1543 | + } |
1544 | + } |
1545 | + } |
1546 | + } |
1547 | + } |
1548 | + |
1549 | + // Label showing the tv show name |
1550 | + Label { |
1551 | + id: gridThumbDescription |
1552 | + text: name |
1553 | + maximumLineCount: 2 |
1554 | + elide: Text.ElideRight |
1555 | + wrapMode: Text.WordWrap |
1556 | + width: gridThumb.width |
1557 | + horizontalAlignment: Text.AlignHCenter |
1558 | + visible: !tabletPortraitForm && !tabletLandscapeForm |
1559 | + |
1560 | + MouseArea { |
1561 | + anchors.fill: parent |
1562 | + onClicked: grid.thumbClicked(model) |
1563 | + } |
1564 | + } |
1565 | + } |
1566 | + } |
1567 | + } |
1568 | + |
1569 | + GridView { |
1570 | + id: gridView |
1571 | + clip: true |
1572 | + width: parent.width |
1573 | + height: header.visible ? parent.height - header.height - parent.spacing : parent.height |
1574 | + snapMode: GridView.SnapToRow |
1575 | + |
1576 | + cellHeight: !tabletPortraitForm && !tabletLandscapeForm ? grid.gridHeight + units.gu(8) : grid.gridHeight + units.gu(4) |
1577 | + cellWidth: grid.size + container.spacing |
1578 | + |
1579 | + delegate: gridType == "gridCarousel" ? gridCarouselDelegate : gridDetailedCarouselDelegate |
1580 | + } |
1581 | + } |
1582 | +} |
1583 | |
1584 | === added file 'components/ImageLabel.qml' |
1585 | --- components/ImageLabel.qml 1970-01-01 00:00:00 +0000 |
1586 | +++ components/ImageLabel.qml 2014-05-14 17:33:57 +0000 |
1587 | @@ -0,0 +1,53 @@ |
1588 | +/* |
1589 | + * Flashback - Entertainment app for Ubuntu |
1590 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
1591 | + * |
1592 | + * This program is free software: you can redistribute it and/or modify |
1593 | + * it under the terms of the GNU General Public License version 3 as |
1594 | + * published by the Free Software Foundation. |
1595 | + * |
1596 | + * This program is distributed in the hope that it will be useful, |
1597 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1598 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1599 | + * GNU General Public License for more details. |
1600 | + * |
1601 | + * You should have received a copy of the GNU General Public License |
1602 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1603 | + * |
1604 | + */ |
1605 | + |
1606 | +import QtQuick 2.0 |
1607 | +import Ubuntu.Components 0.1 |
1608 | + |
1609 | +/* |
1610 | + Generic component to display an icon and text side by side |
1611 | + */ |
1612 | +Item { |
1613 | + id: imageLabel |
1614 | + |
1615 | + // Public Properties |
1616 | + |
1617 | + property alias image: icon.source |
1618 | + property alias label: iconText.text |
1619 | + property alias size: icon.width |
1620 | + |
1621 | + height: childrenRect.height |
1622 | + width: childrenRect.width |
1623 | + |
1624 | + Row { |
1625 | + spacing: units.gu(0.5) |
1626 | + Image { |
1627 | + id: icon |
1628 | + smooth: true |
1629 | + height: width |
1630 | + width: units.gu(4) |
1631 | + antialiasing: true |
1632 | + fillMode: Image.PreserveAspectFit |
1633 | + } |
1634 | + |
1635 | + Label { |
1636 | + id: iconText |
1637 | + anchors.verticalCenter: icon.verticalCenter |
1638 | + } |
1639 | + } |
1640 | +} |
1641 | |
1642 | === added file 'components/ListViewExpandable.qml' |
1643 | --- components/ListViewExpandable.qml 1970-01-01 00:00:00 +0000 |
1644 | +++ components/ListViewExpandable.qml 2014-05-14 17:33:57 +0000 |
1645 | @@ -0,0 +1,80 @@ |
1646 | +/* |
1647 | + * Flashback - Entertainment app for Ubuntu |
1648 | + * Copyright (C) 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
1649 | + * |
1650 | + * This program is free software: you can redistribute it and/or modify |
1651 | + * it under the terms of the GNU General Public License version 3 as |
1652 | + * published by the Free Software Foundation. |
1653 | + * |
1654 | + * This program is distributed in the hope that it will be useful, |
1655 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1656 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1657 | + * GNU General Public License for more details. |
1658 | + * |
1659 | + * You should have received a copy of the GNU General Public License |
1660 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1661 | + * |
1662 | + */ |
1663 | + |
1664 | +import QtQuick 2.0 |
1665 | +import Ubuntu.Components 0.1 |
1666 | +import Ubuntu.Components.ListItems 0.1 |
1667 | + |
1668 | +// Expandable List Element |
1669 | +Expandable { |
1670 | + id: listviewExpandable |
1671 | + |
1672 | + // Property to set the model of the search results listview |
1673 | + property alias model: _resultsList.model |
1674 | + |
1675 | + // Property to set the label of the search category header |
1676 | + property alias header: _header.text |
1677 | + |
1678 | + // Property to store the number of the search results |
1679 | + property int count |
1680 | + |
1681 | + // Property to set the listitem delegate |
1682 | + property alias delegateItem: _resultsList.delegate |
1683 | + |
1684 | + collapseOnClick: true |
1685 | + enabled: count !== 0 |
1686 | + visible: count !== 0 |
1687 | + onClicked: expanded = true |
1688 | + expandedHeight: _contentColumn.height + units.gu(1) |
1689 | + |
1690 | + Column { |
1691 | + id: _contentColumn |
1692 | + anchors { |
1693 | + left: parent.left |
1694 | + right: parent.right |
1695 | + } |
1696 | + |
1697 | + Item { |
1698 | + anchors { |
1699 | + left: parent.left |
1700 | + right: parent.right |
1701 | + } |
1702 | + |
1703 | + height: listviewExpandable.collapsedHeight |
1704 | + |
1705 | + Label { |
1706 | + id: _header |
1707 | + anchors { |
1708 | + left: parent.left |
1709 | + right: parent.right |
1710 | + verticalCenter: parent.verticalCenter |
1711 | + } |
1712 | + } |
1713 | + } |
1714 | + |
1715 | + ListView { |
1716 | + id: _resultsList |
1717 | + clip: true |
1718 | + height: count > 5 ? 5 * units.gu(6) : count * units.gu(6) |
1719 | + anchors { |
1720 | + left: parent.left |
1721 | + right: parent.right |
1722 | + } |
1723 | + } |
1724 | + } |
1725 | +} |
1726 | |
1727 | === added file 'components/LoadingIndicator.qml' |
1728 | --- components/LoadingIndicator.qml 1970-01-01 00:00:00 +0000 |
1729 | +++ components/LoadingIndicator.qml 2014-05-14 17:33:57 +0000 |
1730 | @@ -0,0 +1,60 @@ |
1731 | +/* |
1732 | + * Flashback - Entertainment app for Ubuntu |
1733 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
1734 | + * |
1735 | + * This program is free software: you can redistribute it and/or modify |
1736 | + * it under the terms of the GNU General Public License version 3 as |
1737 | + * published by the Free Software Foundation. |
1738 | + * |
1739 | + * This program is distributed in the hope that it will be useful, |
1740 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1741 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1742 | + * GNU General Public License for more details. |
1743 | + * |
1744 | + * You should have received a copy of the GNU General Public License |
1745 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1746 | + * |
1747 | + */ |
1748 | + |
1749 | +import QtQuick 2.0 |
1750 | +import Ubuntu.Components 0.1 |
1751 | + |
1752 | +/* |
1753 | + Generic loading indicator component to provide user feedback |
1754 | + */ |
1755 | +Rectangle { |
1756 | + id: loadingContainer |
1757 | + |
1758 | + property alias loadingText: _loadingLabel.text |
1759 | + |
1760 | + width: units.gu(30) |
1761 | + height: units.gu(10) |
1762 | + radius: units.gu(0.5) |
1763 | + |
1764 | + /* |
1765 | + WORKAROUND: Due to bug https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1300668, the opacity property |
1766 | + is used for hiding and showing the loading indicator and hence cannot be used for the appearance of the |
1767 | + widget. |
1768 | + */ |
1769 | + //opacity: 0.7 |
1770 | + color: "Black" |
1771 | + |
1772 | + anchors.centerIn: parent |
1773 | + z: parent.z + 1 |
1774 | + |
1775 | + Row { |
1776 | + anchors.centerIn: parent |
1777 | + spacing: units.gu(2) |
1778 | + |
1779 | + ActivityIndicator { |
1780 | + id: _indicator |
1781 | + running: true |
1782 | + } |
1783 | + |
1784 | + Label { |
1785 | + id: _loadingLabel |
1786 | + text: i18n.tr("Loading...") |
1787 | + anchors.verticalCenter: _indicator.verticalCenter |
1788 | + } |
1789 | + } |
1790 | +} |
1791 | |
1792 | === added file 'components/Notification.qml' |
1793 | --- components/Notification.qml 1970-01-01 00:00:00 +0000 |
1794 | +++ components/Notification.qml 2014-05-14 17:33:57 +0000 |
1795 | @@ -0,0 +1,190 @@ |
1796 | +/* |
1797 | + * Flashback - Entertainment app for Ubuntu |
1798 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
1799 | + * |
1800 | + * This program is free software: you can redistribute it and/or modify |
1801 | + * it under the terms of the GNU General Public License version 3 as |
1802 | + * published by the Free Software Foundation. |
1803 | + * |
1804 | + * This program is distributed in the hope that it will be useful, |
1805 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1806 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1807 | + * GNU General Public License for more details. |
1808 | + * |
1809 | + * You should have received a copy of the GNU General Public License |
1810 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1811 | + * |
1812 | + */ |
1813 | + |
1814 | +import QtQuick 2.0 |
1815 | +import Ubuntu.Components 0.1 |
1816 | + |
1817 | +/* |
1818 | + Component to show user notification about an activity |
1819 | + Behavior: Hidden after 10 seconds automatically or when the user clicks the close button |
1820 | + */ |
1821 | +Rectangle { |
1822 | + id: _notificationContainer |
1823 | + |
1824 | + // Property to set the notification title |
1825 | + property alias messageTitle: _notificationTitle.text |
1826 | + |
1827 | + // Property to set the notification message |
1828 | + property alias message: _notificationMessage.text |
1829 | + |
1830 | + // Property to set the notification icon (By default shows the error icon since it is the common case) |
1831 | + property alias messageIcon: _notificationIcon.source |
1832 | + |
1833 | + // Property to set the notification timeout (in seconds). By default set to 10 seconds |
1834 | + property int timeout: 10 |
1835 | + |
1836 | + // |
1837 | + |
1838 | + height: _mainColumn.height + units.gu(5) |
1839 | + anchors.centerIn: parent |
1840 | + width: parent.width/1.2 |
1841 | + radius: units.gu(0.5) |
1842 | + z: parent.z + 1 |
1843 | + visible: false |
1844 | + opacity: 0.8 |
1845 | + color: "Black" |
1846 | + |
1847 | + // When notification is visible, start the internal timer |
1848 | + onVisibleChanged: visible == true ? _countDownTimer.restart() : undefined |
1849 | + |
1850 | + Behavior on width { |
1851 | + UbuntuNumberAnimation { duration: UbuntuAnimation.BriskDuration } |
1852 | + } |
1853 | + |
1854 | + Behavior on height { |
1855 | + UbuntuNumberAnimation { duration: UbuntuAnimation.BriskDuration } |
1856 | + } |
1857 | + |
1858 | + // Timer to show the time countdown to the user (updated every second) |
1859 | + Timer { |
1860 | + id: _countDownTimer |
1861 | + |
1862 | + property int _countDown: timeout |
1863 | + |
1864 | + repeat: true |
1865 | + interval: 1000 |
1866 | + |
1867 | + onTriggered: { |
1868 | + _visualCountDownAnimation.start() |
1869 | + _countDown = _countDown - 1 |
1870 | + if(_countDown == 0) { |
1871 | + _countDownTimer.stop() |
1872 | + _visualCountDownAnimation.complete() |
1873 | + _notificationContainer.visible = false |
1874 | + _countDown = timeout |
1875 | + } |
1876 | + } |
1877 | + } |
1878 | + |
1879 | + // Notification Icon |
1880 | + Image { |
1881 | + id: _notificationIcon |
1882 | + |
1883 | + width: units.gu(5) |
1884 | + height: width |
1885 | + anchors { |
1886 | + verticalCenter: _mainColumn.verticalCenter |
1887 | + left: parent.left |
1888 | + margins: units.gu(2) |
1889 | + } |
1890 | + |
1891 | + source: Qt.resolvedUrl("../graphics/error.png") |
1892 | + fillMode: Image.PreserveAspectFit |
1893 | + smooth: true |
1894 | + } |
1895 | + |
1896 | + // GUI consisting of the notification message. The string shows a custom message |
1897 | + Column { |
1898 | + id: _mainColumn |
1899 | + anchors { |
1900 | + left: _notificationIcon.right |
1901 | + right: parent.right |
1902 | + top: parent.top |
1903 | + margins: units.gu(2) |
1904 | + } |
1905 | + |
1906 | + spacing: units.gu(1) |
1907 | + |
1908 | + Label { |
1909 | + id: _notificationTitle |
1910 | + |
1911 | + text: i18n.tr("Default") |
1912 | + font.bold: true |
1913 | + elide: Text.ElideRight |
1914 | + wrapMode: Text.WordWrap |
1915 | + anchors { |
1916 | + left: parent.left |
1917 | + right: parent.right |
1918 | + } |
1919 | + |
1920 | + } |
1921 | + |
1922 | + Label { |
1923 | + id: _notificationMessage |
1924 | + |
1925 | + text: i18n.tr("Default") |
1926 | + elide: Text.ElideRight |
1927 | + wrapMode: Text.WordWrap |
1928 | + anchors { |
1929 | + left: parent.left |
1930 | + right: parent.right |
1931 | + } |
1932 | + |
1933 | + } |
1934 | + } |
1935 | + |
1936 | + // Visual count down animation (shown at the top) |
1937 | + Rectangle { |
1938 | + id: _visualCountDown |
1939 | + |
1940 | + color: UbuntuColors.orange |
1941 | + height: units.gu(0.4) |
1942 | + anchors { |
1943 | + top: parent.top |
1944 | + left: _closeIcon.right |
1945 | + } |
1946 | + |
1947 | + SequentialAnimation on width { |
1948 | + id: _visualCountDownAnimation |
1949 | + running: false |
1950 | + NumberAnimation { |
1951 | + from: _notificationContainer.width - units.gu(2) |
1952 | + to: 0 |
1953 | + duration: (timeout*1000) - 1000 |
1954 | + } |
1955 | + PauseAnimation {duration: 1000} |
1956 | + } |
1957 | + } |
1958 | + |
1959 | + // Icon to close the notification bubble (shown at the top left corner) |
1960 | + Image { |
1961 | + id: _closeIcon |
1962 | + |
1963 | + width: units.gu(3) |
1964 | + height: width |
1965 | + anchors { |
1966 | + bottom: parent.top |
1967 | + right: parent.left |
1968 | + margins: units.gu(-2) |
1969 | + } |
1970 | + |
1971 | + source: Qt.resolvedUrl("../graphics/close.png") |
1972 | + fillMode: Image.PreserveAspectFit |
1973 | + smooth: true |
1974 | + |
1975 | + MouseArea { |
1976 | + anchors.fill: parent |
1977 | + onClicked: { |
1978 | + _countDownTimer.stop() |
1979 | + _visualCountDownAnimation.complete() |
1980 | + _notificationContainer.visible = false |
1981 | + _countDownTimer._countDown = timeout |
1982 | + } |
1983 | + } |
1984 | + } |
1985 | +} |
1986 | |
1987 | === added file 'components/NowWatching.qml' |
1988 | --- components/NowWatching.qml 1970-01-01 00:00:00 +0000 |
1989 | +++ components/NowWatching.qml 2014-05-14 17:33:57 +0000 |
1990 | @@ -0,0 +1,147 @@ |
1991 | +/* |
1992 | + * Flashback - Entertainment app for Ubuntu |
1993 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
1994 | + * |
1995 | + * This program is free software: you can redistribute it and/or modify |
1996 | + * it under the terms of the GNU General Public License version 3 as |
1997 | + * published by the Free Software Foundation. |
1998 | + * |
1999 | + * This program is distributed in the hope that it will be useful, |
2000 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2001 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2002 | + * GNU General Public License for more details. |
2003 | + * |
2004 | + * You should have received a copy of the GNU General Public License |
2005 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2006 | + * |
2007 | + */ |
2008 | + |
2009 | +import QtQuick 2.0 |
2010 | +import Ubuntu.Components 0.1 |
2011 | +import Ubuntu.Components.ListItems 0.1 |
2012 | + |
2013 | +Column { |
2014 | + id: nowWatching |
2015 | + |
2016 | + spacing: units.gu(1) |
2017 | + |
2018 | + // Public properties to set the currently watched movie/tv |
2019 | + property alias backgroundFanArt: _backgroundFanArt.thumbSource |
2020 | + property alias posterArt: _poster.thumbSource |
2021 | + property alias title: _title.text |
2022 | + property alias subtitle: _subtitle.text |
2023 | + property alias extra: _extra.text |
2024 | + property bool showTrailer: false |
2025 | + |
2026 | + // Signal triggered when a thumb is clicked |
2027 | + signal thumbClicked() |
2028 | + |
2029 | + // Signal triggered when trailer is clicked |
2030 | + signal trailerClicked() |
2031 | + |
2032 | + // Default width and height |
2033 | + property int backgroundWidth: units.gu(35) |
2034 | + property int backgroundHeight: units.gu(20) |
2035 | + |
2036 | + Header { text: i18n.tr("Now Watching") } |
2037 | + |
2038 | + DesaturatedThumbnail { |
2039 | + id: _backgroundFanArt |
2040 | + |
2041 | + width: backgroundWidth |
2042 | + height: backgroundHeight |
2043 | + |
2044 | + Thumbnail { |
2045 | + id: _poster |
2046 | + width: parent.width/3.3 |
2047 | + z: parent.z + 1 |
2048 | + visible: !_backgroundFanArt.ready |
2049 | + anchors { |
2050 | + left: parent.left |
2051 | + top: parent.top |
2052 | + bottom: _detailsContainer.top |
2053 | + margins: units.gu(0.5) |
2054 | + } |
2055 | + } |
2056 | + |
2057 | + // Container to show more details like episode title or movie runtime etc |
2058 | + Rectangle { |
2059 | + id: _detailsContainer |
2060 | + |
2061 | + color: "Black" |
2062 | + opacity: 0.7 |
2063 | + z: parent.z + 1 |
2064 | + radius: units.gu(1) |
2065 | + height: parent.height/5 |
2066 | + visible: !_backgroundFanArt.ready |
2067 | + anchors { |
2068 | + left: parent.left |
2069 | + right: parent.right |
2070 | + bottom: parent.bottom |
2071 | + } |
2072 | + |
2073 | + Label { |
2074 | + id: _subtitle |
2075 | + elide: Text.ElideRight |
2076 | + width: parent.width * (4/5) |
2077 | + anchors { |
2078 | + leftMargin: units.gu(1) |
2079 | + left: parent.left |
2080 | + verticalCenter: parent.verticalCenter |
2081 | + } |
2082 | + } |
2083 | + |
2084 | + Label { |
2085 | + id: _extra |
2086 | + width: parent.width/5 |
2087 | + elide: Text.ElideRight |
2088 | + visible: !nowWatching.showTrailer |
2089 | + horizontalAlignment: Text.AlignRight |
2090 | + anchors { |
2091 | + rightMargin: units.gu(1) |
2092 | + right: parent.right |
2093 | + verticalCenter: parent.verticalCenter |
2094 | + } |
2095 | + } |
2096 | + |
2097 | + Image { |
2098 | + id: _trailer |
2099 | + |
2100 | + width: units.gu(3) |
2101 | + height: width |
2102 | + visible: nowWatching.showTrailer |
2103 | + source: Qt.resolvedUrl("../graphics/trailer.png") |
2104 | + anchors { |
2105 | + rightMargin: units.gu(1) |
2106 | + right: parent.right |
2107 | + verticalCenter: parent.verticalCenter |
2108 | + } |
2109 | + |
2110 | + MouseArea { |
2111 | + anchors.fill: parent |
2112 | + preventStealing: true |
2113 | + enabled: _trailer.visible |
2114 | + onClicked: nowWatching.trailerClicked() |
2115 | + } |
2116 | + } |
2117 | + } |
2118 | + |
2119 | + MouseArea { |
2120 | + id: thumbArea |
2121 | + anchors.fill: parent |
2122 | + onClicked: nowWatching.thumbClicked() |
2123 | + } |
2124 | + } |
2125 | + |
2126 | + Label { |
2127 | + id: _title |
2128 | + maximumLineCount: 2 |
2129 | + elide: Text.ElideRight |
2130 | + wrapMode: Text.WordWrap |
2131 | + horizontalAlignment: Text.AlignHCenter |
2132 | + anchors { |
2133 | + left: _backgroundFanArt.left |
2134 | + right: _backgroundFanArt.right |
2135 | + } |
2136 | + } |
2137 | +} |
2138 | |
2139 | === added file 'components/RatingChooser.qml' |
2140 | --- components/RatingChooser.qml 1970-01-01 00:00:00 +0000 |
2141 | +++ components/RatingChooser.qml 2014-05-14 17:33:57 +0000 |
2142 | @@ -0,0 +1,106 @@ |
2143 | +/* |
2144 | + * Flashback - Entertainment app for Ubuntu |
2145 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2146 | + * |
2147 | + * This program is free software: you can redistribute it and/or modify |
2148 | + * it under the terms of the GNU General Public License version 3 as |
2149 | + * published by the Free Software Foundation. |
2150 | + * |
2151 | + * This program is distributed in the hope that it will be useful, |
2152 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2153 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2154 | + * GNU General Public License for more details. |
2155 | + * |
2156 | + * You should have received a copy of the GNU General Public License |
2157 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2158 | + * |
2159 | + */ |
2160 | + |
2161 | +import QtQuick 2.0 |
2162 | +import Ubuntu.Components 0.1 |
2163 | +import Ubuntu.Components.ListItems 0.1 |
2164 | +import "../backend/backend.js" as Backend |
2165 | +import "../models" |
2166 | + |
2167 | +Rectangle { |
2168 | + id: ratingsChoice |
2169 | + |
2170 | + // Public properties required for submitting a user rating to Trakt |
2171 | + property string type |
2172 | + property string type_id |
2173 | + property string name |
2174 | + property string year |
2175 | + property int season |
2176 | + property int episode |
2177 | + |
2178 | + // Property to hold the user rating. |
2179 | + property int ratings: 0 |
2180 | + |
2181 | + // Signal triggered when ratings is successfully submitted |
2182 | + signal ratingClicked() |
2183 | + |
2184 | + TraktUserRating { |
2185 | + id: traktUserRating |
2186 | + function updateJSONModel() { |
2187 | + if(reply.status === "success") { |
2188 | + console.log("[LOG]: " + type + " ratings success") |
2189 | + ratingsChoice.ratings = ratingListModel.get(ratingList.currentIndex).rating |
2190 | + ratingsChoice.ratingClicked() |
2191 | + } |
2192 | + } |
2193 | + } |
2194 | + |
2195 | + color: "Black" |
2196 | + visible: false |
2197 | + radius: units.gu(2) |
2198 | + width: parent.width/1.6 |
2199 | + height: parent.height/1.2 |
2200 | + |
2201 | + TraktRatingModel { id: ratingListModel } |
2202 | + |
2203 | + ListView { |
2204 | + id: ratingList |
2205 | + |
2206 | + clip: true |
2207 | + currentIndex: -1 |
2208 | + model: ratingListModel |
2209 | + spacing: units.gu(1) |
2210 | + anchors { |
2211 | + top: parent.top |
2212 | + left: parent.left |
2213 | + right: parent.right |
2214 | + bottom: cancelButton.top |
2215 | + margins: units.gu(2) |
2216 | + } |
2217 | + |
2218 | + delegate: Standard { |
2219 | + text: ratingDescription |
2220 | + iconFrame: false |
2221 | + iconSource: Qt.resolvedUrl(thumb_url) |
2222 | + onClicked: { |
2223 | + ratingList.currentIndex = index |
2224 | + ratingsChoice.visible = false |
2225 | + traktUserRating.source = Backend.traktAddRatingUrl(type) |
2226 | + if(type === "movie") |
2227 | + traktUserRating.createMovieMessage(traktLogin.contents.username, traktLogin.contents.password, type_id, name, year, rating) |
2228 | + else if(type === "episode") |
2229 | + traktUserRating.createEpisodeMessage(traktLogin.contents.username, traktLogin.contents.password, type_id, name, year, season, episode, rating) |
2230 | + else if(type === "show") |
2231 | + traktUserRating.createShowMessage(traktLogin.contents.username, traktLogin.contents.password, type_id, name, year, rating) |
2232 | + traktUserRating.sendMessage() |
2233 | + } |
2234 | + } |
2235 | + } |
2236 | + |
2237 | + Button { |
2238 | + id: cancelButton |
2239 | + width: parent.width/2 |
2240 | + text: i18n.tr("Cancel") |
2241 | + onClicked: ratingsChoice.visible = false |
2242 | + anchors { |
2243 | + horizontalCenter: parent.horizontalCenter |
2244 | + bottom: parent.bottom |
2245 | + bottomMargin: units.gu(2) |
2246 | + } |
2247 | + } |
2248 | +} |
2249 | |
2250 | === added file 'components/Rotater.qml' |
2251 | --- components/Rotater.qml 1970-01-01 00:00:00 +0000 |
2252 | +++ components/Rotater.qml 2014-05-14 17:33:57 +0000 |
2253 | @@ -0,0 +1,66 @@ |
2254 | +/* |
2255 | + * Flashback - Entertainment app for Ubuntu |
2256 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2257 | + * |
2258 | + * This program is free software: you can redistribute it and/or modify |
2259 | + * it under the terms of the GNU General Public License version 3 as |
2260 | + * published by the Free Software Foundation. |
2261 | + * |
2262 | + * This program is distributed in the hope that it will be useful, |
2263 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2264 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2265 | + * GNU General Public License for more details. |
2266 | + * |
2267 | + * You should have received a copy of the GNU General Public License |
2268 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2269 | + * |
2270 | + */ |
2271 | + |
2272 | +import QtQuick 2.0 |
2273 | +import Ubuntu.Components 0.1 |
2274 | + |
2275 | +/* |
2276 | + Generic component to provide the capability to truncate text or data when space is limited and yet provide |
2277 | + allow viewing of lengthy text or data when required without using a page. |
2278 | + */ |
2279 | +Flipable { |
2280 | + id: _rotater |
2281 | + |
2282 | + // Property to flip the component to view the full extensive text or data |
2283 | + property bool flipped: false |
2284 | + |
2285 | + // Property to hold the height of the flipped component |
2286 | + property real flipHeight |
2287 | + |
2288 | + z: parent.z + 1 |
2289 | + |
2290 | + transform: Rotation { |
2291 | + id: _rotation |
2292 | + origin { x: _rotater.width/2; y: _rotater.height/2 } |
2293 | + axis { x: 0; y: 1; z: 0 } |
2294 | + angle: 0 |
2295 | + } |
2296 | + |
2297 | + states: State { |
2298 | + name: "back" |
2299 | + PropertyChanges { target: _rotation; angle: 180 } |
2300 | + PropertyChanges { target: _rotater; height: flipHeight } |
2301 | + PropertyChanges { target: _rotater; anchors.topMargin: units.gu(0) } |
2302 | + |
2303 | + AnchorChanges { |
2304 | + target: _rotater |
2305 | + anchors.top: parent.top |
2306 | + anchors.left: parent.left |
2307 | + anchors.right: parent.right |
2308 | + } |
2309 | + |
2310 | + when: _rotater.flipped |
2311 | + } |
2312 | + |
2313 | + transitions: Transition { |
2314 | + ParallelAnimation { |
2315 | + UbuntuNumberAnimation { target: _rotation; property: "angle"; duration: UbuntuAnimation.SlowDuration } |
2316 | + AnchorAnimation {} |
2317 | + } |
2318 | + } |
2319 | +} |
2320 | |
2321 | === added file 'components/SearchBox.qml' |
2322 | --- components/SearchBox.qml 1970-01-01 00:00:00 +0000 |
2323 | +++ components/SearchBox.qml 2014-05-14 17:33:57 +0000 |
2324 | @@ -0,0 +1,57 @@ |
2325 | +/* |
2326 | + * Flashback - Entertainment app for Ubuntu |
2327 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2328 | + * |
2329 | + * This program is free software: you can redistribute it and/or modify |
2330 | + * it under the terms of the GNU General Public License version 3 as |
2331 | + * published by the Free Software Foundation. |
2332 | + * |
2333 | + * This program is distributed in the hope that it will be useful, |
2334 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2335 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2336 | + * GNU General Public License for more details. |
2337 | + * |
2338 | + * You should have received a copy of the GNU General Public License |
2339 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2340 | + * |
2341 | + */ |
2342 | + |
2343 | +import QtQuick 2.0 |
2344 | +import Ubuntu.Components 0.1 |
2345 | + |
2346 | +Item { |
2347 | + id: searchBox |
2348 | + |
2349 | + property alias defaultText: searchField.placeholderText |
2350 | + property alias search_term: searchField.text |
2351 | + signal searchTriggered() |
2352 | + |
2353 | + Component.onCompleted: search_timer.triggered.connect(searchTriggered) |
2354 | + |
2355 | + TextField { |
2356 | + id: searchField |
2357 | + anchors { |
2358 | + left: parent.left |
2359 | + right: parent.right |
2360 | + top: parent.top |
2361 | + } |
2362 | + |
2363 | + primaryItem: Image { |
2364 | + height: parent.height/1.5; |
2365 | + fillMode: Image.PreserveAspectFit |
2366 | + source: Qt.resolvedUrl("../graphics/search_icon.svg") |
2367 | + } |
2368 | + |
2369 | + Timer { |
2370 | + id: search_timer |
2371 | + interval: 1100 |
2372 | + repeat: false |
2373 | + } |
2374 | + |
2375 | + placeholderText: i18n.tr("Search") |
2376 | + hasClearButton: true |
2377 | + inputMethodHints: Qt.ImhNoPredictiveText |
2378 | + onTextChanged: search_timer.restart() |
2379 | + } |
2380 | +} |
2381 | + |
2382 | |
2383 | === added file 'components/SearchPage.qml' |
2384 | --- components/SearchPage.qml 1970-01-01 00:00:00 +0000 |
2385 | +++ components/SearchPage.qml 2014-05-14 17:33:57 +0000 |
2386 | @@ -0,0 +1,74 @@ |
2387 | +/* |
2388 | + * Flashback - Entertainment app for Ubuntu |
2389 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2390 | + * |
2391 | + * This program is free software: you can redistribute it and/or modify |
2392 | + * it under the terms of the GNU General Public License version 3 as |
2393 | + * published by the Free Software Foundation. |
2394 | + * |
2395 | + * This program is distributed in the hope that it will be useful, |
2396 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2397 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2398 | + * GNU General Public License for more details. |
2399 | + * |
2400 | + * You should have received a copy of the GNU General Public License |
2401 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2402 | + * |
2403 | + */ |
2404 | + |
2405 | +import QtQuick 2.0 |
2406 | +import Ubuntu.Components 0.1 |
2407 | +import Ubuntu.Components.ListItems 0.1 |
2408 | +import "../backend/backend.js" as Backend |
2409 | + |
2410 | +Item { |
2411 | + id: _searchTemplate |
2412 | + |
2413 | + // Public Properties |
2414 | + property alias searchBoxText: _searchBox.defaultText |
2415 | + property string type |
2416 | + property variant search_model |
2417 | + signal resultClicked(var model) |
2418 | + |
2419 | + // Search Box to enter search query along with the search button |
2420 | + SearchBox { |
2421 | + id: _searchBox |
2422 | + anchors { |
2423 | + top: parent.top |
2424 | + left: parent.left |
2425 | + right: parent.right |
2426 | + margins: units.gu(2) |
2427 | + } |
2428 | + onSearchTriggered: { |
2429 | + search_model.model.clear(); |
2430 | + search_model.source = Backend.searchUrl(type, _searchBox.search_term); |
2431 | + if (type == "tv") { |
2432 | + search_model.createMessage(traktLogin.contents.username, traktLogin.contents.password) |
2433 | + search_model.sendMessage() |
2434 | + } |
2435 | + } |
2436 | + } |
2437 | + |
2438 | + ListView { |
2439 | + id: _searchResultsList |
2440 | + clip: true |
2441 | + anchors { |
2442 | + left: parent.left |
2443 | + right: parent.right |
2444 | + bottom: parent.bottom |
2445 | + top: _searchBox.bottom |
2446 | + leftMargin: units.gu(2) |
2447 | + rightMargin: units.gu(2) |
2448 | + bottomMargin: units.gu(2) |
2449 | + topMargin: units.gu(5) |
2450 | + } |
2451 | + |
2452 | + model: search_model.model |
2453 | + |
2454 | + delegate: Standard { |
2455 | + text: name |
2456 | + iconSource: thumb_url |
2457 | + onClicked: _searchTemplate.resultClicked(model) |
2458 | + } |
2459 | + } |
2460 | +} |
2461 | |
2462 | === added file 'components/SidebarMenuItem.qml' |
2463 | --- components/SidebarMenuItem.qml 1970-01-01 00:00:00 +0000 |
2464 | +++ components/SidebarMenuItem.qml 2014-05-14 17:33:57 +0000 |
2465 | @@ -0,0 +1,155 @@ |
2466 | +/* |
2467 | + * Flashback - Entertainment app for Ubuntu |
2468 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2469 | + * |
2470 | + * This program is free software: you can redistribute it and/or modify |
2471 | + * it under the terms of the GNU General Public License version 3 as |
2472 | + * published by the Free Software Foundation. |
2473 | + * |
2474 | + * This program is distributed in the hope that it will be useful, |
2475 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2476 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2477 | + * GNU General Public License for more details. |
2478 | + * |
2479 | + * You should have received a copy of the GNU General Public License |
2480 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2481 | + * |
2482 | + */ |
2483 | + |
2484 | +import QtQuick 2.0 |
2485 | +import Ubuntu.Layouts 0.1 |
2486 | +import Ubuntu.Components 0.1 |
2487 | +import Ubuntu.Components.ListItems 0.1 as ListItem |
2488 | + |
2489 | +/* |
2490 | + Menu item component for the Sidebar |
2491 | + */ |
2492 | +ListItem.Empty { |
2493 | + id: _sidebarMenuItem |
2494 | + |
2495 | + // Property to set the label of the menu item in tablet portrait form |
2496 | + property string shortenedMenuLabel |
2497 | + |
2498 | + // Property to set the label of the menu item in tablet landscape form |
2499 | + property string menuLabel |
2500 | + |
2501 | + // Property to set the icon of the menu item |
2502 | + property alias menuIcon: _menuIcon.source |
2503 | + |
2504 | + // Property to store the menu status (selected or not selected) |
2505 | + property bool isSelected: false |
2506 | + |
2507 | + // Property to show menu item count |
2508 | + property string menuCount: "0" |
2509 | + |
2510 | + width: parent.width |
2511 | + height: tabletPortraitForm ? units.gu(10) : units.gu(8) |
2512 | + |
2513 | + Rectangle { |
2514 | + id: _indicator |
2515 | + |
2516 | + width: units.gu(0) |
2517 | + height: parent.height |
2518 | + color: UbuntuColors.orange |
2519 | + anchors { |
2520 | + left: parent.left |
2521 | + top: parent.top |
2522 | + bottom: parent.bottom |
2523 | + } |
2524 | + |
2525 | + states: State { |
2526 | + name: "selected" |
2527 | + when: isSelected |
2528 | + PropertyChanges { target: _indicator; width: units.gu(1) } |
2529 | + } |
2530 | + |
2531 | + transitions: Transition { |
2532 | + PropertyAnimation { target: _indicator; property: "width"; duration: UbuntuAnimation.FastDuration } |
2533 | + } |
2534 | + } |
2535 | + |
2536 | + Layouts { |
2537 | + anchors.fill: parent |
2538 | + anchors.leftMargin: tabletPortraitForm ? units.gu(0) : units.gu(3) |
2539 | + |
2540 | + layouts: [ |
2541 | + ConditionalLayout { |
2542 | + name: "IconForm" |
2543 | + when: tabletPortraitForm |
2544 | + |
2545 | + Column { |
2546 | + anchors.fill: parent |
2547 | + anchors.margins: units.gu(1.5) |
2548 | + spacing: units.gu(1) |
2549 | + |
2550 | + ItemLayout { |
2551 | + item: "_menuIconItem" |
2552 | + width: units.gu(4) |
2553 | + height: units.gu(4) |
2554 | + anchors.horizontalCenter: parent.horizontalCenter |
2555 | + |
2556 | + ItemLayout { |
2557 | + item: "menuCountItem" |
2558 | + width: units.gu(2.5) |
2559 | + height: units.gu(2.5) |
2560 | + anchors.top: parent.top |
2561 | + anchors.topMargin: -units.gu(0.5) |
2562 | + anchors.left: parent.right |
2563 | + anchors.leftMargin: units.gu(1) |
2564 | + } |
2565 | + } |
2566 | + |
2567 | + ItemLayout { |
2568 | + item: "_menuLabelItem" |
2569 | + width: _menuLabel.width |
2570 | + height: _menuLabel.height |
2571 | + anchors.horizontalCenter: parent.horizontalCenter |
2572 | + } |
2573 | + } |
2574 | + } |
2575 | + ] |
2576 | + |
2577 | + Row { |
2578 | + anchors.fill: parent |
2579 | + spacing: units.gu(2) |
2580 | + |
2581 | + Image { |
2582 | + id: _menuIcon |
2583 | + Layouts.item: "_menuIconItem" |
2584 | + antialiasing: true |
2585 | + height: parent.height/2.5 |
2586 | + fillMode: Image.PreserveAspectFit |
2587 | + anchors.verticalCenter: parent.verticalCenter |
2588 | + } |
2589 | + |
2590 | + Label { |
2591 | + id: _menuLabel |
2592 | + Layouts.item: "_menuLabelItem" |
2593 | + width: units.gu(18) |
2594 | + anchors.verticalCenter: parent.verticalCenter |
2595 | + color: isSelected ? UbuntuColors.orange : "White" |
2596 | + text: tabletPortraitForm ? shortenedMenuLabel : menuLabel |
2597 | + horizontalAlignment: tabletPortraitForm ? Text.AlignHCenter : 0 |
2598 | + |
2599 | + } |
2600 | + |
2601 | + Rectangle { |
2602 | + id: _menuCount |
2603 | + Layouts.item: "menuCountItem" |
2604 | + opacity: menuCount !== "0" ? 1 : 0 |
2605 | + color: UbuntuColors.orange |
2606 | + width: units.gu(5) |
2607 | + height: units.gu(3) |
2608 | + radius: height |
2609 | + anchors.verticalCenter: parent.verticalCenter |
2610 | + |
2611 | + Label { |
2612 | + anchors.centerIn: parent |
2613 | + text: menuCount |
2614 | + } |
2615 | + } |
2616 | + } |
2617 | + |
2618 | + |
2619 | + } |
2620 | +} |
2621 | |
2622 | === added file 'components/StatusIcons.qml' |
2623 | --- components/StatusIcons.qml 1970-01-01 00:00:00 +0000 |
2624 | +++ components/StatusIcons.qml 2014-05-14 17:33:57 +0000 |
2625 | @@ -0,0 +1,68 @@ |
2626 | +/* |
2627 | + * Flashback - Entertainment app for Ubuntu |
2628 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2629 | + * |
2630 | + * This program is free software: you can redistribute it and/or modify |
2631 | + * it under the terms of the GNU General Public License version 3 as |
2632 | + * published by the Free Software Foundation. |
2633 | + * |
2634 | + * This program is distributed in the hope that it will be useful, |
2635 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2636 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2637 | + * GNU General Public License for more details. |
2638 | + * |
2639 | + * You should have received a copy of the GNU General Public License |
2640 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2641 | + * |
2642 | + */ |
2643 | + |
2644 | +import QtQuick 2.0 |
2645 | +import Ubuntu.Components 0.1 |
2646 | + |
2647 | +/* |
2648 | + Component to show movie/show status icons such as watched status, watchlist, etc. |
2649 | + */ |
2650 | +Rectangle { |
2651 | + id: _statusIconsContainer |
2652 | + |
2653 | + property real iconWidth: units.gu(2) |
2654 | + property bool showWatchedIcon: false |
2655 | + property bool showWatchListIcon: false |
2656 | + |
2657 | + color: "black" |
2658 | + opacity: 0.7 |
2659 | + smooth: true |
2660 | + z: parent.z + 1 |
2661 | + radius: units.gu(0.5) |
2662 | + width: _iconColumn.width + units.gu(0.5) |
2663 | + height: showWatchedIcon || showWatchListIcon ? _iconColumn.height + units.gu(0.5) : 0 |
2664 | + |
2665 | + Column { |
2666 | + id: _iconColumn |
2667 | + anchors { |
2668 | + top: parent.top |
2669 | + left: parent.left |
2670 | + margins: units.gu(0.2) |
2671 | + } |
2672 | + |
2673 | + spacing: units.gu(0.2) |
2674 | + |
2675 | + Image { |
2676 | + id: _watchPic |
2677 | + source: Qt.resolvedUrl("../graphics/watched.png") |
2678 | + fillMode: Image.PreserveAspectFit |
2679 | + visible: showWatchedIcon |
2680 | + width: iconWidth |
2681 | + smooth: true |
2682 | + } |
2683 | + |
2684 | + Image { |
2685 | + id: _watchListPic |
2686 | + source: Qt.resolvedUrl("../graphics/watchlist.png") |
2687 | + fillMode: Image.PreserveAspectFit |
2688 | + visible: showWatchListIcon |
2689 | + width: iconWidth |
2690 | + smooth: true |
2691 | + } |
2692 | + } |
2693 | +} |
2694 | |
2695 | === added file 'components/TabletSidebar.qml' |
2696 | --- components/TabletSidebar.qml 1970-01-01 00:00:00 +0000 |
2697 | +++ components/TabletSidebar.qml 2014-05-14 17:33:57 +0000 |
2698 | @@ -0,0 +1,58 @@ |
2699 | +/* |
2700 | + * Flashback - Entertainment app for Ubuntu |
2701 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2702 | + * |
2703 | + * This program is free software: you can redistribute it and/or modify |
2704 | + * it under the terms of the GNU General Public License version 3 as |
2705 | + * published by the Free Software Foundation. |
2706 | + * |
2707 | + * This program is distributed in the hope that it will be useful, |
2708 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2709 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2710 | + * GNU General Public License for more details. |
2711 | + * |
2712 | + * You should have received a copy of the GNU General Public License |
2713 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2714 | + * |
2715 | + */ |
2716 | + |
2717 | +import QtQuick 2.0 |
2718 | +import QtQuick.Layouts 1.1 |
2719 | +import Ubuntu.Components 0.1 |
2720 | + |
2721 | +// Sidebar Component shown on the left side and can be used to house various options |
2722 | +Rectangle { |
2723 | + id: sidebar |
2724 | + |
2725 | + width: units.gu(0) |
2726 | + Layout.minimumWidth: units.gu(0) |
2727 | + Layout.maximumWidth: units.gu(0) |
2728 | + |
2729 | + color: Qt.rgba(0,0,0,0.4) |
2730 | + anchors.top: parent.top |
2731 | + anchors.bottom: parent.bottom |
2732 | + |
2733 | + states: [ |
2734 | + State { |
2735 | + name: "IconForm" |
2736 | + when: tabletPortraitForm |
2737 | + PropertyChanges { target: sidebar; width: units.gu(15) } |
2738 | + PropertyChanges { target: sidebar; Layout.minimumWidth: units.gu(15) } |
2739 | + PropertyChanges { target: sidebar; Layout.maximumWidth: units.gu(15) } |
2740 | + }, |
2741 | + |
2742 | + State { |
2743 | + name: "FullForm" |
2744 | + when: tabletLandscapeForm |
2745 | + PropertyChanges { target: sidebar; width: units.gu(35) } |
2746 | + PropertyChanges { target: sidebar; Layout.minimumWidth: units.gu(35) } |
2747 | + PropertyChanges { target: sidebar; Layout.maximumWidth: units.gu(35) } |
2748 | + } |
2749 | + ] |
2750 | + |
2751 | + transitions: Transition { |
2752 | + PropertyAnimation { target: sidebar; property: "width"; duration: UbuntuAnimation.FastDuration } |
2753 | + PropertyAnimation { target: sidebar; property: "Layout.minimumWidth"; duration: UbuntuAnimation.FastDuration } |
2754 | + PropertyAnimation { target: sidebar; property: "Layout.maximumWidth"; duration: UbuntuAnimation.FastDuration } |
2755 | + } |
2756 | +} |
2757 | |
2758 | === added file 'components/Thumbnail.qml' |
2759 | --- components/Thumbnail.qml 1970-01-01 00:00:00 +0000 |
2760 | +++ components/Thumbnail.qml 2014-05-14 17:33:57 +0000 |
2761 | @@ -0,0 +1,41 @@ |
2762 | +/* |
2763 | + * Flashback - Entertainment app for Ubuntu |
2764 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2765 | + * |
2766 | + * This program is free software: you can redistribute it and/or modify |
2767 | + * it under the terms of the GNU General Public License version 3 as |
2768 | + * published by the Free Software Foundation. |
2769 | + * |
2770 | + * This program is distributed in the hope that it will be useful, |
2771 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2772 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2773 | + * GNU General Public License for more details. |
2774 | + * |
2775 | + * You should have received a copy of the GNU General Public License |
2776 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2777 | + * |
2778 | + */ |
2779 | + |
2780 | +import QtQuick 2.0 |
2781 | +import Ubuntu.Components 0.1 |
2782 | + |
2783 | +/* |
2784 | + Thumbnail wraps up an image in a ubuntu shape container. |
2785 | + */ |
2786 | +UbuntuShape { |
2787 | + id: carouselThumb |
2788 | + |
2789 | + property alias thumbSource: thumbPic.source |
2790 | + radius: "medium" |
2791 | + |
2792 | + image: Image { |
2793 | + id: thumbPic |
2794 | + fillMode: Image.PreserveAspectCrop |
2795 | + smooth: true |
2796 | + } |
2797 | + |
2798 | + ActivityIndicator { |
2799 | + running: thumbPic.status != Image.Ready |
2800 | + anchors.centerIn: parent |
2801 | + } |
2802 | +} |
2803 | |
2804 | === added file 'components/TraktAction.qml' |
2805 | --- components/TraktAction.qml 1970-01-01 00:00:00 +0000 |
2806 | +++ components/TraktAction.qml 2014-05-14 17:33:57 +0000 |
2807 | @@ -0,0 +1,28 @@ |
2808 | +/* |
2809 | + * Flashback - Entertainment app for Ubuntu |
2810 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2811 | + * |
2812 | + * This program is free software: you can redistribute it and/or modify |
2813 | + * it under the terms of the GNU General Public License version 3 as |
2814 | + * published by the Free Software Foundation. |
2815 | + * |
2816 | + * This program is distributed in the hope that it will be useful, |
2817 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2818 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2819 | + * GNU General Public License for more details. |
2820 | + * |
2821 | + * You should have received a copy of the GNU General Public License |
2822 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2823 | + * |
2824 | + */ |
2825 | + |
2826 | +import QtQuick 2.0 |
2827 | +import Ubuntu.Components 0.1 |
2828 | + |
2829 | +Action { |
2830 | + id: shareEpisodeAction |
2831 | + text: i18n.tr("Trakt") |
2832 | + keywords: i18n.tr("Trakt;Account;Watched;Seen;Share;Checkin;Social") |
2833 | + description: i18n.tr("Show Trakt Actions") |
2834 | + iconSource: Qt.resolvedUrl("../graphics/trakt.png") |
2835 | +} |
2836 | |
2837 | === added file 'components/TraktPopup.qml' |
2838 | --- components/TraktPopup.qml 1970-01-01 00:00:00 +0000 |
2839 | +++ components/TraktPopup.qml 2014-05-14 17:33:57 +0000 |
2840 | @@ -0,0 +1,123 @@ |
2841 | +/* |
2842 | + * Flashback - Entertainment app for Ubuntu |
2843 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2844 | + * |
2845 | + * This program is free software: you can redistribute it and/or modify |
2846 | + * it under the terms of the GNU General Public License version 3 as |
2847 | + * published by the Free Software Foundation. |
2848 | + * |
2849 | + * This program is distributed in the hope that it will be useful, |
2850 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2851 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2852 | + * GNU General Public License for more details. |
2853 | + * |
2854 | + * You should have received a copy of the GNU General Public License |
2855 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2856 | + * |
2857 | + */ |
2858 | + |
2859 | +import QtQuick 2.0 |
2860 | +import Ubuntu.Components 0.1 |
2861 | +import Ubuntu.Components.Popups 0.1 |
2862 | +import Ubuntu.Components.ListItems 0.1 |
2863 | + |
2864 | +/* |
2865 | + Popup component to expose Trakt actions such as check-in, seen and configuring account. |
2866 | + */ |
2867 | +Popover { |
2868 | + id: popover |
2869 | + |
2870 | + // Property to set the check-in message |
2871 | + property alias checkInMessage: _checkInAction.text |
2872 | + |
2873 | + // Property to set the seen message |
2874 | + property alias seenMessage: _seenAction.text |
2875 | + |
2876 | + // Property to set the watchlist message |
2877 | + property alias watchlistMessage: _watchlistAction.text |
2878 | + |
2879 | + // Properties to set the visibility of the individual actions |
2880 | + property bool showConfigureAction: traktLogin.contents.status === "disabled" |
2881 | + property bool showCheckInAction: traktLogin.contents.status !== "disabled" |
2882 | + property bool showSeenAction: traktLogin.contents.status !== "disabled" |
2883 | + property bool showWatchlistAction: traktLogin.contents.status !== "disabled" |
2884 | + property bool showCommentAction: true |
2885 | + |
2886 | + // Signal triggered when the checked-in action is triggered |
2887 | + signal checkedIn() |
2888 | + |
2889 | + // Signal triggered when the watched action is triggered |
2890 | + signal watched() |
2891 | + |
2892 | + // Signal triggered when the comments action is triggered |
2893 | + signal commented() |
2894 | + |
2895 | + // Signal triggered when the watchlist action is triggered |
2896 | + signal watchlisted() |
2897 | + |
2898 | + Column { |
2899 | + id: containerLayout |
2900 | + anchors { |
2901 | + left: parent.left |
2902 | + top: parent.top |
2903 | + right: parent.right |
2904 | + } |
2905 | + |
2906 | + Standard { |
2907 | + id: _configureTraktAction |
2908 | + text: i18n.tr("Authenticate Trakt to perform \ncheck-ins, comment and rating.") |
2909 | + visible: showConfigureAction |
2910 | + iconSource: Qt.resolvedUrl("../graphics/trakt_logo.png") |
2911 | + onClicked: { |
2912 | + pagestack.push(Qt.resolvedUrl("../ui/Trakt.qml")) |
2913 | + PopupUtils.close(popover) |
2914 | + } |
2915 | + } |
2916 | + |
2917 | + Standard { |
2918 | + id: _checkInAction |
2919 | + visible: showCheckInAction |
2920 | + iconSource: Qt.resolvedUrl("../graphics/checkmark_black.png") |
2921 | + iconFrame: false |
2922 | + onClicked: { |
2923 | + popover.checkedIn() |
2924 | + PopupUtils.close(popover) |
2925 | + } |
2926 | + } |
2927 | + |
2928 | + Standard { |
2929 | + id: _watchlistAction |
2930 | + visible: showWatchlistAction |
2931 | + iconSource: Qt.resolvedUrl("../graphics/watchlist_black.png") |
2932 | + iconFrame: false |
2933 | + onClicked: { |
2934 | + popover.watchlisted() |
2935 | + PopupUtils.close(popover) |
2936 | + } |
2937 | + } |
2938 | + |
2939 | + Standard { |
2940 | + id: _seenAction |
2941 | + visible: showSeenAction |
2942 | + iconSource: Qt.resolvedUrl("../graphics/watched_black.png") |
2943 | + iconFrame: false |
2944 | + onClicked: { |
2945 | + popover.watched() |
2946 | + PopupUtils.close(popover) |
2947 | + } |
2948 | + } |
2949 | + |
2950 | + Standard { |
2951 | + id: _commentAction |
2952 | + visible: showCommentAction |
2953 | + iconSource: Qt.resolvedUrl("../graphics/comment.png") |
2954 | + text: traktLogin.contents.status !== "disabled" ? i18n.tr("View/Add comments") : i18n.tr("View comments") |
2955 | + iconFrame: false |
2956 | + onClicked: { |
2957 | + popover.commented() |
2958 | + PopupUtils.close(popover) |
2959 | + } |
2960 | + } |
2961 | + } |
2962 | +} |
2963 | + |
2964 | |
2965 | === added file 'components/TraktRating.qml' |
2966 | --- components/TraktRating.qml 1970-01-01 00:00:00 +0000 |
2967 | +++ components/TraktRating.qml 2014-05-14 17:33:57 +0000 |
2968 | @@ -0,0 +1,56 @@ |
2969 | +/* |
2970 | + * Flashback - Entertainment app for Ubuntu |
2971 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
2972 | + * |
2973 | + * This program is free software: you can redistribute it and/or modify |
2974 | + * it under the terms of the GNU General Public License version 3 as |
2975 | + * published by the Free Software Foundation. |
2976 | + * |
2977 | + * This program is distributed in the hope that it will be useful, |
2978 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
2979 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2980 | + * GNU General Public License for more details. |
2981 | + * |
2982 | + * You should have received a copy of the GNU General Public License |
2983 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2984 | + * |
2985 | + */ |
2986 | + |
2987 | +import QtQuick 2.0 |
2988 | +import Ubuntu.Components 0.1 |
2989 | +import "../components" |
2990 | + |
2991 | +Item { |
2992 | + id: ratings |
2993 | + |
2994 | + property alias rating: _rating.label |
2995 | + property alias personal: _personalRating.label |
2996 | + property alias personalIcon: _personalRating.image |
2997 | + |
2998 | + height: _overallRating.height |
2999 | + |
3000 | + signal clicked() |
3001 | + |
3002 | + Row { |
3003 | + id: _overallRating |
3004 | + |
3005 | + spacing: units.gu(2) |
3006 | + anchors { |
3007 | + horizontalCenter: parent.horizontalCenter |
3008 | + verticalCenter: parent.verticalCenter |
3009 | + } |
3010 | + |
3011 | + ImageLabel { |
3012 | + id: _rating |
3013 | + image: Qt.resolvedUrl("../graphics/star.png") |
3014 | + } |
3015 | + |
3016 | + ImageLabel { |
3017 | + id: _personalRating |
3018 | + MouseArea { |
3019 | + anchors.fill: parent |
3020 | + onClicked: ratings.clicked() |
3021 | + } |
3022 | + } |
3023 | + } |
3024 | +} |
3025 | |
3026 | === added directory 'debian' |
3027 | === renamed directory 'debian' => 'debian.moved' |
3028 | === added file 'debian/changelog' |
3029 | --- debian/changelog 1970-01-01 00:00:00 +0000 |
3030 | +++ debian/changelog 2014-05-14 17:33:57 +0000 |
3031 | @@ -0,0 +1,27 @@ |
3032 | +flashback (0.4~alpha1) trusty; urgency=medium |
3033 | + |
3034 | + [Nekhelesh Ramananthan] |
3035 | + * Fixed blurry actor placeholder image (LP: #1293787) |
3036 | + * Added placeholder text to the actors page biography if none are found (LP: #1292891) |
3037 | + * Made the ratings chooser opaque (LP: #1292884) |
3038 | + * Replace acting and production listview in actors page wth expandables (LP: #1292882) |
3039 | + * In the phone form factor, carousel now only shows 2 and 2/3rd cover art (LP: #1292878) |
3040 | + |
3041 | + -- Nekhelesh Ramananthan <krnekhelesh@gmail.com> Sat, 22 Mar 2014 15:04:33 +0100 |
3042 | + |
3043 | +flashback (0.3.2ubuntu1) trusty; urgency=medium |
3044 | + |
3045 | + [Nekhelesh Ramananthan] |
3046 | + * Fixed debian packaing failnig due to missing flashback executable file |
3047 | + |
3048 | + -- Nekhelesh Ramananthan <krnekhelesh@gmail.com> Mon, 17 Mar 2014 13:51:18 +0100 |
3049 | + |
3050 | +flashback (0.3.2) trusty; urgency=medium |
3051 | + |
3052 | + [Nekhelesh Ramananthan] |
3053 | + * Added walkthrough feature |
3054 | + * Added new home page search function |
3055 | + * Improved the visual of detail carousel corner radius |
3056 | + * Improved TV Show experience |
3057 | + |
3058 | + -- Nekhelesh Ramananthan <krnekhelesh@gmail.com> Mon, 17 Mar 2014 09:43:01 +0100 |
3059 | |
3060 | === added file 'debian/compat' |
3061 | --- debian/compat 1970-01-01 00:00:00 +0000 |
3062 | +++ debian/compat 2014-05-14 17:33:57 +0000 |
3063 | @@ -0,0 +1,1 @@ |
3064 | +9 |
3065 | |
3066 | === added file 'debian/control' |
3067 | --- debian/control 1970-01-01 00:00:00 +0000 |
3068 | +++ debian/control 2014-05-14 17:33:57 +0000 |
3069 | @@ -0,0 +1,23 @@ |
3070 | +Source: flashback |
3071 | +Section: utils |
3072 | +Priority: extra |
3073 | +Maintainer: Nekhelesh Ramananthan <nik90@ubuntu.com> |
3074 | +Build-Depends: debhelper (>= 9.0.0) |
3075 | +Standards-Version: 3.9.5 |
3076 | +Homepage: http://launchpad.net/cliffhanger |
3077 | +Vcs-Bzr: https://code.launchpad.net/~cliffhanger-dev/cliffhanger/trunk |
3078 | + |
3079 | +Package: flashback |
3080 | +Architecture: all |
3081 | +Depends: ${misc:Depends}, |
3082 | + qtdeclarative5-hud1.0, |
3083 | + qtdeclarative5-qtquick2-plugin, |
3084 | + qtdeclarative5-ubuntu-ui-toolkit-plugin, |
3085 | + qtdeclarative5-u1db1.0, |
3086 | + qmlscene |
3087 | +Description: Flashback application |
3088 | + Flashback is an entertainment application that helps you manage your movie |
3089 | + and TV show cravings. It integrates with Trakt and TMDB online services to |
3090 | + provide a variety of features such as discovering new movie, keeping track |
3091 | + of tv shows, adding movies and tv shows to your watchlist to watch later. |
3092 | + |
3093 | |
3094 | === added file 'debian/copyright' |
3095 | --- debian/copyright 1970-01-01 00:00:00 +0000 |
3096 | +++ debian/copyright 2014-05-14 17:33:57 +0000 |
3097 | @@ -0,0 +1,28 @@ |
3098 | +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ |
3099 | +Upstream-Name: flashback |
3100 | +Source: https://launchpad.net/cliffhanger |
3101 | + |
3102 | +Files: * |
3103 | +Copyright: 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
3104 | +License: GPL-3.0 |
3105 | + |
3106 | +Files: debian/* |
3107 | +Copyright: 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
3108 | +License: GPL-3.0 |
3109 | + |
3110 | +License: GPL-3.0 |
3111 | + This program is free software: you can redistribute it and/or modify |
3112 | + it under the terms of the GNU General Public License as published by |
3113 | + the Free Software Foundation, either version 3 of the License, or |
3114 | + (at your option) any later version. |
3115 | + . |
3116 | + This package is distributed in the hope that it will be useful, |
3117 | + but WITHOUT ANY WARRANTY; without even the implied warranty of |
3118 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3119 | + GNU General Public License for more details. |
3120 | + . |
3121 | + You should have received a copy of the GNU General Public License |
3122 | + along with this program. If not, see <http://www.gnu.org/licenses/>. |
3123 | + . |
3124 | + On Debian systems, the complete text of the GNU General |
3125 | + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". |
3126 | |
3127 | === added file 'debian/install' |
3128 | --- debian/install 1970-01-01 00:00:00 +0000 |
3129 | +++ debian/install 2014-05-14 17:33:57 +0000 |
3130 | @@ -0,0 +1,9 @@ |
3131 | +Flashback.desktop usr/share/applications/ |
3132 | +Flashback.qml usr/share/flashback/ |
3133 | +flashback.png usr/share/icons/hicolor/256x256/apps/ |
3134 | +backend usr/share/flashback/ |
3135 | +components usr/share/flashback/ |
3136 | +graphics usr/share/flashback/ |
3137 | +models usr/share/flashback/ |
3138 | +ui usr/share/flashback/ |
3139 | +walkthrough usr/share/flashback/ |
3140 | |
3141 | === added file 'debian/rules' |
3142 | --- debian/rules 1970-01-01 00:00:00 +0000 |
3143 | +++ debian/rules 2014-05-14 17:33:57 +0000 |
3144 | @@ -0,0 +1,7 @@ |
3145 | +#!/usr/bin/make -f |
3146 | +# -*- makefile -*- |
3147 | +# Uncomment this to turn on verbose mode. |
3148 | +#export DH_VERBOSE=1 |
3149 | + |
3150 | +%: |
3151 | + dh $@ |
3152 | |
3153 | === added directory 'debian/source' |
3154 | === added file 'debian/source/format' |
3155 | --- debian/source/format 1970-01-01 00:00:00 +0000 |
3156 | +++ debian/source/format 2014-05-14 17:33:57 +0000 |
3157 | @@ -0,0 +1,1 @@ |
3158 | +3.0 (native) |
3159 | |
3160 | === added file 'design.jpg' |
3161 | Binary files design.jpg 1970-01-01 00:00:00 +0000 and design.jpg 2014-05-14 17:33:57 +0000 differ |
3162 | === renamed file 'design.jpg' => 'design.jpg.moved' |
3163 | === added file 'flashback.png' |
3164 | Binary files flashback.png 1970-01-01 00:00:00 +0000 and flashback.png 2014-05-14 17:33:57 +0000 differ |
3165 | === renamed file 'flashback.png' => 'flashback.png.moved' |
3166 | === added directory 'graphics' |
3167 | === renamed directory 'graphics' => 'graphics.moved' |
3168 | === added file 'graphics/add@8.png' |
3169 | Binary files graphics/add@8.png 1970-01-01 00:00:00 +0000 and graphics/add@8.png 2014-05-14 17:33:57 +0000 differ |
3170 | === added file 'graphics/arrow.png' |
3171 | Binary files graphics/arrow.png 1970-01-01 00:00:00 +0000 and graphics/arrow.png 2014-05-14 17:33:57 +0000 differ |
3172 | === added file 'graphics/author.jpg' |
3173 | Binary files graphics/author.jpg 1970-01-01 00:00:00 +0000 and graphics/author.jpg 2014-05-14 17:33:57 +0000 differ |
3174 | === added file 'graphics/bookmark.png' |
3175 | Binary files graphics/bookmark.png 1970-01-01 00:00:00 +0000 and graphics/bookmark.png 2014-05-14 17:33:57 +0000 differ |
3176 | === added file 'graphics/calendar.png' |
3177 | Binary files graphics/calendar.png 1970-01-01 00:00:00 +0000 and graphics/calendar.png 2014-05-14 17:33:57 +0000 differ |
3178 | === added file 'graphics/centerImage.png' |
3179 | Binary files graphics/centerImage.png 1970-01-01 00:00:00 +0000 and graphics/centerImage.png 2014-05-14 17:33:57 +0000 differ |
3180 | === added file 'graphics/checkmark.png' |
3181 | Binary files graphics/checkmark.png 1970-01-01 00:00:00 +0000 and graphics/checkmark.png 2014-05-14 17:33:57 +0000 differ |
3182 | === added file 'graphics/checkmark_black.png' |
3183 | Binary files graphics/checkmark_black.png 1970-01-01 00:00:00 +0000 and graphics/checkmark_black.png 2014-05-14 17:33:57 +0000 differ |
3184 | === added file 'graphics/close.png' |
3185 | Binary files graphics/close.png 1970-01-01 00:00:00 +0000 and graphics/close.png 2014-05-14 17:33:57 +0000 differ |
3186 | === added file 'graphics/comment.png' |
3187 | Binary files graphics/comment.png 1970-01-01 00:00:00 +0000 and graphics/comment.png 2014-05-14 17:33:57 +0000 differ |
3188 | === added file 'graphics/credits.png' |
3189 | Binary files graphics/credits.png 1970-01-01 00:00:00 +0000 and graphics/credits.png 2014-05-14 17:33:57 +0000 differ |
3190 | === added file 'graphics/designer.jpg' |
3191 | Binary files graphics/designer.jpg 1970-01-01 00:00:00 +0000 and graphics/designer.jpg 2014-05-14 17:33:57 +0000 differ |
3192 | === added file 'graphics/duration.png' |
3193 | Binary files graphics/duration.png 1970-01-01 00:00:00 +0000 and graphics/duration.png 2014-05-14 17:33:57 +0000 differ |
3194 | === added file 'graphics/email.png' |
3195 | Binary files graphics/email.png 1970-01-01 00:00:00 +0000 and graphics/email.png 2014-05-14 17:33:57 +0000 differ |
3196 | === added file 'graphics/error.png' |
3197 | Binary files graphics/error.png 1970-01-01 00:00:00 +0000 and graphics/error.png 2014-05-14 17:33:57 +0000 differ |
3198 | === added file 'graphics/facebook_logo.png' |
3199 | Binary files graphics/facebook_logo.png 1970-01-01 00:00:00 +0000 and graphics/facebook_logo.png 2014-05-14 17:33:57 +0000 differ |
3200 | === added file 'graphics/find@32.svg' |
3201 | --- graphics/find@32.svg 1970-01-01 00:00:00 +0000 |
3202 | +++ graphics/find@32.svg 2014-05-14 17:33:57 +0000 |
3203 | @@ -0,0 +1,140 @@ |
3204 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
3205 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
3206 | + |
3207 | +<svg |
3208 | + xmlns:dc="http://purl.org/dc/elements/1.1/" |
3209 | + xmlns:cc="http://creativecommons.org/ns#" |
3210 | + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
3211 | + xmlns:svg="http://www.w3.org/2000/svg" |
3212 | + xmlns="http://www.w3.org/2000/svg" |
3213 | + xmlns:xlink="http://www.w3.org/1999/xlink" |
3214 | + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
3215 | + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
3216 | + width="90" |
3217 | + height="90.000015" |
3218 | + id="svg3133" |
3219 | + version="1.1" |
3220 | + inkscape:version="0.48.3.1 r9886" |
3221 | + sodipodi:docname="search@30.svg"> |
3222 | + <defs |
3223 | + id="defs3135"> |
3224 | + <linearGradient |
3225 | + inkscape:collect="always" |
3226 | + id="linearGradient3803"> |
3227 | + <stop |
3228 | + style="stop-color:#e7e5e5;stop-opacity:1;" |
3229 | + offset="0" |
3230 | + id="stop3805" /> |
3231 | + <stop |
3232 | + style="stop-color:#e2dfdf;stop-opacity:1" |
3233 | + offset="1" |
3234 | + id="stop3807" /> |
3235 | + </linearGradient> |
3236 | + <linearGradient |
3237 | + inkscape:collect="always" |
3238 | + xlink:href="#linearGradient3803" |
3239 | + id="linearGradient3809" |
3240 | + x1="53.012165" |
3241 | + y1="-102.79017" |
3242 | + x2="53.012165" |
3243 | + y2="-66.661224" |
3244 | + gradientUnits="userSpaceOnUse" /> |
3245 | + <linearGradient |
3246 | + inkscape:collect="always" |
3247 | + xlink:href="#linearGradient3803" |
3248 | + id="linearGradient3813" |
3249 | + gradientUnits="userSpaceOnUse" |
3250 | + x1="53.012165" |
3251 | + y1="-102.79017" |
3252 | + x2="53.012165" |
3253 | + y2="-66.661224" |
3254 | + gradientTransform="translate(-625,0)" /> |
3255 | + </defs> |
3256 | + <sodipodi:namedview |
3257 | + id="base" |
3258 | + pagecolor="#ffffff" |
3259 | + bordercolor="#666666" |
3260 | + borderopacity="1.0" |
3261 | + inkscape:pageopacity="0.0" |
3262 | + inkscape:pageshadow="2" |
3263 | + inkscape:zoom="4.074536" |
3264 | + inkscape:cx="65.661925" |
3265 | + inkscape:cy="-9.5470961" |
3266 | + inkscape:document-units="px" |
3267 | + inkscape:current-layer="g3842" |
3268 | + showgrid="true" |
3269 | + inkscape:window-width="1920" |
3270 | + inkscape:window-height="1029" |
3271 | + inkscape:window-x="0" |
3272 | + inkscape:window-y="24" |
3273 | + inkscape:window-maximized="1" |
3274 | + inkscape:snap-grids="true" |
3275 | + inkscape:snap-global="true" |
3276 | + fit-margin-top="0" |
3277 | + fit-margin-left="0" |
3278 | + fit-margin-right="0" |
3279 | + fit-margin-bottom="0"> |
3280 | + <inkscape:grid |
3281 | + type="xygrid" |
3282 | + id="grid3016" |
3283 | + empspacing="6" |
3284 | + visible="true" |
3285 | + enabled="true" |
3286 | + snapvisiblegridlinesonly="true" |
3287 | + originx="-2.98e-06px" |
3288 | + originy="2.6171874e-06px" /> |
3289 | + </sodipodi:namedview> |
3290 | + <metadata |
3291 | + id="metadata3138"> |
3292 | + <rdf:RDF> |
3293 | + <cc:Work |
3294 | + rdf:about=""> |
3295 | + <dc:format>image/svg+xml</dc:format> |
3296 | + <dc:type |
3297 | + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> |
3298 | + <dc:title /> |
3299 | + </cc:Work> |
3300 | + </rdf:RDF> |
3301 | + </metadata> |
3302 | + <g |
3303 | + inkscape:label="Layer 1" |
3304 | + inkscape:groupmode="layer" |
3305 | + id="layer1" |
3306 | + transform="translate(-2.98e-6,-962.36219)" |
3307 | + style="display:inline"> |
3308 | + <g |
3309 | + transform="matrix(0.99934414,0,0,1,-106.92982,549.00002)" |
3310 | + id="g3842" |
3311 | + style="display:inline"> |
3312 | + <rect |
3313 | + style="opacity:0.05;color:#000000;fill:none;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3314 | + id="rect3844" |
3315 | + width="90.059067" |
3316 | + height="90.000015" |
3317 | + x="107" |
3318 | + y="-503.36218" |
3319 | + transform="scale(1,-1)" /> |
3320 | + <path |
3321 | + sodipodi:type="arc" |
3322 | + style="color:#000000;fill:none;stroke:#808080;stroke-width:9.49973201999999972;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3323 | + id="path2995" |
3324 | + sodipodi:cx="35.999996" |
3325 | + sodipodi:cy="36.500011" |
3326 | + sodipodi:rx="33" |
3327 | + sodipodi:ry="33.5" |
3328 | + d="m 68.999996,36.500011 a 33,33.5 0 1 1 -65.9999998,0 33,33.5 0 1 1 65.9999998,0 z" |
3329 | + transform="matrix(0.9551718,0,0,0.94029844,108.63744,415.04128)" /> |
3330 | + <path |
3331 | + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:6;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" |
3332 | + d="m 168.16512,470.23717 -4.25279,4.25 21.01378,21 4.25279,-4.25 -21.01378,-21 z" |
3333 | + id="path3765" |
3334 | + inkscape:connector-curvature="0" /> |
3335 | + <path |
3336 | + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:11.80387211;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" |
3337 | + d="m 175.96875,476.40625 c -2.32437,0.012 -4.57033,1.53501 -5.44162,3.68994 -0.87128,2.15492 -0.31496,4.81092 1.34787,6.43506 l 13.7996,13.79991 c 4.02735,4.27401 4.89575,3.69726 8.46955,0.1258 3.57381,-3.57146 4.15747,-4.18909 -0.1258,-8.46955 l -13.7996,-13.79991 c -1.10179,-1.12969 -2.672,-1.78779 -4.25,-1.78125 z" |
3338 | + id="path3767" |
3339 | + inkscape:connector-curvature="0" |
3340 | + sodipodi:nodetypes="cscczccc" /> |
3341 | + </g> |
3342 | + </g> |
3343 | +</svg> |
3344 | |
3345 | === added file 'graphics/fusion.png' |
3346 | Binary files graphics/fusion.png 1970-01-01 00:00:00 +0000 and graphics/fusion.png 2014-05-14 17:33:57 +0000 differ |
3347 | === added file 'graphics/guide.png' |
3348 | Binary files graphics/guide.png 1970-01-01 00:00:00 +0000 and graphics/guide.png 2014-05-14 17:33:57 +0000 differ |
3349 | === added file 'graphics/heart-0.png' |
3350 | Binary files graphics/heart-0.png 1970-01-01 00:00:00 +0000 and graphics/heart-0.png 2014-05-14 17:33:57 +0000 differ |
3351 | === added file 'graphics/heart-1.png' |
3352 | Binary files graphics/heart-1.png 1970-01-01 00:00:00 +0000 and graphics/heart-1.png 2014-05-14 17:33:57 +0000 differ |
3353 | === added file 'graphics/heart-10.png' |
3354 | Binary files graphics/heart-10.png 1970-01-01 00:00:00 +0000 and graphics/heart-10.png 2014-05-14 17:33:57 +0000 differ |
3355 | === added file 'graphics/heart-2.png' |
3356 | Binary files graphics/heart-2.png 1970-01-01 00:00:00 +0000 and graphics/heart-2.png 2014-05-14 17:33:57 +0000 differ |
3357 | === added file 'graphics/heart-3.png' |
3358 | Binary files graphics/heart-3.png 1970-01-01 00:00:00 +0000 and graphics/heart-3.png 2014-05-14 17:33:57 +0000 differ |
3359 | === added file 'graphics/heart-4.png' |
3360 | Binary files graphics/heart-4.png 1970-01-01 00:00:00 +0000 and graphics/heart-4.png 2014-05-14 17:33:57 +0000 differ |
3361 | === added file 'graphics/heart-5.png' |
3362 | Binary files graphics/heart-5.png 1970-01-01 00:00:00 +0000 and graphics/heart-5.png 2014-05-14 17:33:57 +0000 differ |
3363 | === added file 'graphics/heart-6.png' |
3364 | Binary files graphics/heart-6.png 1970-01-01 00:00:00 +0000 and graphics/heart-6.png 2014-05-14 17:33:57 +0000 differ |
3365 | === added file 'graphics/heart-7.png' |
3366 | Binary files graphics/heart-7.png 1970-01-01 00:00:00 +0000 and graphics/heart-7.png 2014-05-14 17:33:57 +0000 differ |
3367 | === added file 'graphics/heart-8.png' |
3368 | Binary files graphics/heart-8.png 1970-01-01 00:00:00 +0000 and graphics/heart-8.png 2014-05-14 17:33:57 +0000 differ |
3369 | === added file 'graphics/heart-9.png' |
3370 | Binary files graphics/heart-9.png 1970-01-01 00:00:00 +0000 and graphics/heart-9.png 2014-05-14 17:33:57 +0000 differ |
3371 | === added file 'graphics/help.png' |
3372 | Binary files graphics/help.png 1970-01-01 00:00:00 +0000 and graphics/help.png 2014-05-14 17:33:57 +0000 differ |
3373 | === added file 'graphics/home.png' |
3374 | Binary files graphics/home.png 1970-01-01 00:00:00 +0000 and graphics/home.png 2014-05-14 17:33:57 +0000 differ |
3375 | === added file 'graphics/icon_designer.jpg' |
3376 | Binary files graphics/icon_designer.jpg 1970-01-01 00:00:00 +0000 and graphics/icon_designer.jpg 2014-05-14 17:33:57 +0000 differ |
3377 | === added file 'graphics/list.png' |
3378 | Binary files graphics/list.png 1970-01-01 00:00:00 +0000 and graphics/list.png 2014-05-14 17:33:57 +0000 differ |
3379 | === added file 'graphics/network.png' |
3380 | Binary files graphics/network.png 1970-01-01 00:00:00 +0000 and graphics/network.png 2014-05-14 17:33:57 +0000 differ |
3381 | === added file 'graphics/no-passport@8.png' |
3382 | Binary files graphics/no-passport@8.png 1970-01-01 00:00:00 +0000 and graphics/no-passport@8.png 2014-05-14 17:33:57 +0000 differ |
3383 | === added file 'graphics/no-poster.jpg' |
3384 | Binary files graphics/no-poster.jpg 1970-01-01 00:00:00 +0000 and graphics/no-poster.jpg 2014-05-14 17:33:57 +0000 differ |
3385 | === added file 'graphics/now_playing@48.png' |
3386 | Binary files graphics/now_playing@48.png 1970-01-01 00:00:00 +0000 and graphics/now_playing@48.png 2014-05-14 17:33:57 +0000 differ |
3387 | === added file 'graphics/password.png' |
3388 | Binary files graphics/password.png 1970-01-01 00:00:00 +0000 and graphics/password.png 2014-05-14 17:33:57 +0000 differ |
3389 | === added file 'graphics/play@32.svg' |
3390 | --- graphics/play@32.svg 1970-01-01 00:00:00 +0000 |
3391 | +++ graphics/play@32.svg 2014-05-14 17:33:57 +0000 |
3392 | @@ -0,0 +1,98 @@ |
3393 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
3394 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
3395 | + |
3396 | +<svg |
3397 | + xmlns:dc="http://purl.org/dc/elements/1.1/" |
3398 | + xmlns:cc="http://creativecommons.org/ns#" |
3399 | + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
3400 | + xmlns:svg="http://www.w3.org/2000/svg" |
3401 | + xmlns="http://www.w3.org/2000/svg" |
3402 | + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
3403 | + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
3404 | + width="90" |
3405 | + height="90" |
3406 | + id="svg3747" |
3407 | + version="1.1" |
3408 | + inkscape:version="0.48.3.1 r9886" |
3409 | + sodipodi:docname="media-play@30.svg"> |
3410 | + <defs |
3411 | + id="defs3749" /> |
3412 | + <sodipodi:namedview |
3413 | + id="base" |
3414 | + pagecolor="#ffffff" |
3415 | + bordercolor="#666666" |
3416 | + borderopacity="1.0" |
3417 | + inkscape:pageopacity="0.0" |
3418 | + inkscape:pageshadow="2" |
3419 | + inkscape:zoom="3.259629" |
3420 | + inkscape:cx="64.301793" |
3421 | + inkscape:cy="-13.007581" |
3422 | + inkscape:document-units="px" |
3423 | + inkscape:current-layer="g4171" |
3424 | + showgrid="true" |
3425 | + fit-margin-top="0" |
3426 | + fit-margin-left="0" |
3427 | + fit-margin-right="0" |
3428 | + fit-margin-bottom="0" |
3429 | + inkscape:window-width="1920" |
3430 | + inkscape:window-height="1029" |
3431 | + inkscape:window-x="0" |
3432 | + inkscape:window-y="24" |
3433 | + inkscape:window-maximized="1"> |
3434 | + <inkscape:grid |
3435 | + type="xygrid" |
3436 | + id="grid3012" |
3437 | + empspacing="6" |
3438 | + visible="true" |
3439 | + enabled="true" |
3440 | + snapvisiblegridlinesonly="true" |
3441 | + originx="0px" |
3442 | + originy="1.3134766e-05px" /> |
3443 | + </sodipodi:namedview> |
3444 | + <metadata |
3445 | + id="metadata3752"> |
3446 | + <rdf:RDF> |
3447 | + <cc:Work |
3448 | + rdf:about=""> |
3449 | + <dc:format>image/svg+xml</dc:format> |
3450 | + <dc:type |
3451 | + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> |
3452 | + <dc:title /> |
3453 | + </cc:Work> |
3454 | + </rdf:RDF> |
3455 | + </metadata> |
3456 | + <g |
3457 | + inkscape:label="Layer 1" |
3458 | + inkscape:groupmode="layer" |
3459 | + id="layer1" |
3460 | + transform="translate(-144,-962.36221)"> |
3461 | + <g |
3462 | + transform="translate(-198,611)" |
3463 | + id="g4171"> |
3464 | + <path |
3465 | + sodipodi:type="star" |
3466 | + style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3467 | + id="path4984" |
3468 | + sodipodi:sides="3" |
3469 | + sodipodi:cx="111" |
3470 | + sodipodi:cy="174.09448" |
3471 | + sodipodi:r1="5.8309517" |
3472 | + sodipodi:r2="2.9154758" |
3473 | + sodipodi:arg1="1.0471976" |
3474 | + sodipodi:arg2="2.0943951" |
3475 | + inkscape:flatsided="true" |
3476 | + inkscape:rounded="0.06" |
3477 | + inkscape:randomized="0" |
3478 | + d="m 113.91548,179.14423 c -0.52479,0.30299 -8.74643,-4.44378 -8.74643,-5.04975 0,-0.60597 8.22164,-5.35273 8.74643,-5.04975 0.52478,0.30299 0.52478,9.79652 0,10.0995 z" |
3479 | + transform="matrix(-5.9080854,0,0,5.9245853,1038.3477,-635.0754)" |
3480 | + inkscape:transform-center-x="-5.7056976" /> |
3481 | + <rect |
3482 | + style="color:#000000;fill:none;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3483 | + id="rect2986" |
3484 | + width="90" |
3485 | + height="90" |
3486 | + x="342" |
3487 | + y="351.36221" /> |
3488 | + </g> |
3489 | + </g> |
3490 | +</svg> |
3491 | |
3492 | === added file 'graphics/rating@8.png' |
3493 | Binary files graphics/rating@8.png 1970-01-01 00:00:00 +0000 and graphics/rating@8.png 2014-05-14 17:33:57 +0000 differ |
3494 | === added file 'graphics/recommended@48.png' |
3495 | Binary files graphics/recommended@48.png 1970-01-01 00:00:00 +0000 and graphics/recommended@48.png 2014-05-14 17:33:57 +0000 differ |
3496 | === added file 'graphics/search_icon@8.svg' |
3497 | --- graphics/search_icon@8.svg 1970-01-01 00:00:00 +0000 |
3498 | +++ graphics/search_icon@8.svg 2014-05-14 17:33:57 +0000 |
3499 | @@ -0,0 +1,153 @@ |
3500 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
3501 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
3502 | + |
3503 | +<svg |
3504 | + xmlns:dc="http://purl.org/dc/elements/1.1/" |
3505 | + xmlns:cc="http://creativecommons.org/ns#" |
3506 | + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
3507 | + xmlns:svg="http://www.w3.org/2000/svg" |
3508 | + xmlns="http://www.w3.org/2000/svg" |
3509 | + xmlns:xlink="http://www.w3.org/1999/xlink" |
3510 | + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
3511 | + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
3512 | + width="32" |
3513 | + height="32" |
3514 | + id="svg3133" |
3515 | + version="1.1" |
3516 | + inkscape:version="0.48.4 r9939" |
3517 | + sodipodi:docname="search.svg"> |
3518 | + <defs |
3519 | + id="defs3135"> |
3520 | + <linearGradient |
3521 | + inkscape:collect="always" |
3522 | + id="linearGradient3803"> |
3523 | + <stop |
3524 | + style="stop-color:#e7e5e5;stop-opacity:1;" |
3525 | + offset="0" |
3526 | + id="stop3805" /> |
3527 | + <stop |
3528 | + style="stop-color:#e2dfdf;stop-opacity:1" |
3529 | + offset="1" |
3530 | + id="stop3807" /> |
3531 | + </linearGradient> |
3532 | + <linearGradient |
3533 | + inkscape:collect="always" |
3534 | + xlink:href="#linearGradient3803" |
3535 | + id="linearGradient3809" |
3536 | + x1="53.012165" |
3537 | + y1="-102.79017" |
3538 | + x2="53.012165" |
3539 | + y2="-66.661224" |
3540 | + gradientUnits="userSpaceOnUse" /> |
3541 | + <linearGradient |
3542 | + inkscape:collect="always" |
3543 | + xlink:href="#linearGradient3803" |
3544 | + id="linearGradient3813" |
3545 | + gradientUnits="userSpaceOnUse" |
3546 | + x1="53.012165" |
3547 | + y1="-102.79017" |
3548 | + x2="53.012165" |
3549 | + y2="-66.661224" |
3550 | + gradientTransform="translate(-625,0)" /> |
3551 | + </defs> |
3552 | + <sodipodi:namedview |
3553 | + id="base" |
3554 | + pagecolor="#ffffff" |
3555 | + bordercolor="#666666" |
3556 | + borderopacity="1.0" |
3557 | + inkscape:pageopacity="0.0" |
3558 | + inkscape:pageshadow="2" |
3559 | + inkscape:zoom="11.313708" |
3560 | + inkscape:cx="27.957393" |
3561 | + inkscape:cy="7.2819708" |
3562 | + inkscape:document-units="px" |
3563 | + inkscape:current-layer="g3842" |
3564 | + showgrid="true" |
3565 | + inkscape:window-width="1855" |
3566 | + inkscape:window-height="1056" |
3567 | + inkscape:window-x="65" |
3568 | + inkscape:window-y="24" |
3569 | + inkscape:window-maximized="1" |
3570 | + inkscape:snap-grids="true" |
3571 | + inkscape:snap-global="true" |
3572 | + fit-margin-top="0" |
3573 | + fit-margin-left="0" |
3574 | + fit-margin-right="0" |
3575 | + fit-margin-bottom="0" |
3576 | + inkscape:snap-bbox="true" |
3577 | + inkscape:bbox-paths="true" |
3578 | + inkscape:bbox-nodes="true" |
3579 | + inkscape:snap-bbox-edge-midpoints="true" |
3580 | + inkscape:snap-bbox-midpoints="true" |
3581 | + inkscape:object-paths="true" |
3582 | + inkscape:snap-intersection-paths="true" |
3583 | + inkscape:snap-midpoints="true" |
3584 | + inkscape:snap-smooth-nodes="true" |
3585 | + inkscape:object-nodes="true" |
3586 | + inkscape:snap-object-midpoints="true" |
3587 | + inkscape:snap-center="true"> |
3588 | + <inkscape:grid |
3589 | + type="xygrid" |
3590 | + id="grid3016" |
3591 | + empspacing="6" |
3592 | + visible="true" |
3593 | + enabled="true" |
3594 | + snapvisiblegridlinesonly="true" |
3595 | + originx="-2.98e-06px" |
3596 | + originy="2.6171874e-06px" /> |
3597 | + </sodipodi:namedview> |
3598 | + <metadata |
3599 | + id="metadata3138"> |
3600 | + <rdf:RDF> |
3601 | + <cc:Work |
3602 | + rdf:about=""> |
3603 | + <dc:format>image/svg+xml</dc:format> |
3604 | + <dc:type |
3605 | + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> |
3606 | + <dc:title></dc:title> |
3607 | + </cc:Work> |
3608 | + </rdf:RDF> |
3609 | + </metadata> |
3610 | + <g |
3611 | + inkscape:label="Layer 1" |
3612 | + inkscape:groupmode="layer" |
3613 | + id="layer1" |
3614 | + transform="translate(-2.98e-6,-1020.3622)" |
3615 | + style="display:inline"> |
3616 | + <g |
3617 | + transform="matrix(0.99934414,0,0,1,-106.92982,549.00002)" |
3618 | + id="g3842" |
3619 | + style="display:inline"> |
3620 | + <rect |
3621 | + style="opacity:0.05;color:#000000;fill:none;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3622 | + id="rect3844" |
3623 | + width="32.021008" |
3624 | + height="32.000011" |
3625 | + x="107" |
3626 | + y="-503.36218" |
3627 | + transform="scale(1,-1)" /> |
3628 | + <path |
3629 | + sodipodi:type="arc" |
3630 | + style="color:#000000;fill:none;stroke:#808080;stroke-width:10.49972248;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3631 | + id="path2995" |
3632 | + sodipodi:cx="35.999996" |
3633 | + sodipodi:cy="36.500011" |
3634 | + sodipodi:rx="33" |
3635 | + sodipodi:ry="33.5" |
3636 | + d="m 68.999996,36.500011 a 33,33.5 0 1 1 -65.9999998,0 33,33.5 0 1 1 65.9999998,0 z" |
3637 | + transform="matrix(0.30695569,0,0,0.30279797,111.9601,476.31005)" /> |
3638 | + <path |
3639 | + style="font-size:xx-small;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:6;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" |
3640 | + d="m 131.23812,494.07329 -1.51211,1.51111 4.26947,4.26666 1.5121,-1.5111 z" |
3641 | + id="path3765" |
3642 | + inkscape:connector-curvature="0" |
3643 | + sodipodi:nodetypes="ccccc" /> |
3644 | + <path |
3645 | + style="font-size:xx-small;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#808080;fill-opacity:1;stroke:none;stroke-width:11.80387211;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" |
3646 | + d="m 133.30117,495.55563 c -0.82645,0.004 -1.62501,0.54578 -1.9348,1.31198 -0.30979,0.7662 -0.11199,1.71055 0.47924,2.28802 l 3.12758,3.12885 c 1.43195,1.51965 1.74071,1.31459 3.0114,0.0447 1.27069,-1.26986 1.47821,-1.48946 -0.0447,-3.01141 l -3.12758,-3.12885 c -0.39175,-0.40166 -0.95004,-0.63566 -1.51111,-0.63333 z" |
3647 | + id="path3767" |
3648 | + inkscape:connector-curvature="0" |
3649 | + sodipodi:nodetypes="cscczccc" /> |
3650 | + </g> |
3651 | + </g> |
3652 | +</svg> |
3653 | |
3654 | === added file 'graphics/settings@32.svg' |
3655 | --- graphics/settings@32.svg 1970-01-01 00:00:00 +0000 |
3656 | +++ graphics/settings@32.svg 2014-05-14 17:33:57 +0000 |
3657 | @@ -0,0 +1,138 @@ |
3658 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
3659 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
3660 | + |
3661 | +<svg |
3662 | + xmlns:dc="http://purl.org/dc/elements/1.1/" |
3663 | + xmlns:cc="http://creativecommons.org/ns#" |
3664 | + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
3665 | + xmlns:svg="http://www.w3.org/2000/svg" |
3666 | + xmlns="http://www.w3.org/2000/svg" |
3667 | + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
3668 | + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
3669 | + width="90" |
3670 | + height="90" |
3671 | + id="svg3133" |
3672 | + version="1.1" |
3673 | + inkscape:version="0.48.3.1 r9886" |
3674 | + sodipodi:docname="settings@30.svg"> |
3675 | + <defs |
3676 | + id="defs3135" /> |
3677 | + <sodipodi:namedview |
3678 | + id="base" |
3679 | + pagecolor="#ffffff" |
3680 | + bordercolor="#666666" |
3681 | + borderopacity="1.0" |
3682 | + inkscape:pageopacity="0.0" |
3683 | + inkscape:pageshadow="2" |
3684 | + inkscape:zoom="6.3664628" |
3685 | + inkscape:cx="93.340685" |
3686 | + inkscape:cy="27.377839" |
3687 | + inkscape:document-units="px" |
3688 | + inkscape:current-layer="g4674" |
3689 | + showgrid="true" |
3690 | + inkscape:window-width="1920" |
3691 | + inkscape:window-height="1029" |
3692 | + inkscape:window-x="0" |
3693 | + inkscape:window-y="24" |
3694 | + inkscape:window-maximized="1" |
3695 | + fit-margin-top="0" |
3696 | + fit-margin-left="0" |
3697 | + fit-margin-right="0" |
3698 | + fit-margin-bottom="0" |
3699 | + showguides="true" |
3700 | + inkscape:guide-bbox="true"> |
3701 | + <inkscape:grid |
3702 | + type="xygrid" |
3703 | + id="grid2992" |
3704 | + empspacing="6" |
3705 | + visible="true" |
3706 | + enabled="true" |
3707 | + snapvisiblegridlinesonly="true" |
3708 | + originx="4.2039363e-07px" |
3709 | + originy="0px" /> |
3710 | + <sodipodi:guide |
3711 | + orientation="1,0" |
3712 | + position="45,11" |
3713 | + id="guide3763" /> |
3714 | + <sodipodi:guide |
3715 | + orientation="0,1" |
3716 | + position="48,45" |
3717 | + id="guide3765" /> |
3718 | + </sodipodi:namedview> |
3719 | + <metadata |
3720 | + id="metadata3138"> |
3721 | + <rdf:RDF> |
3722 | + <cc:Work |
3723 | + rdf:about=""> |
3724 | + <dc:format>image/svg+xml</dc:format> |
3725 | + <dc:type |
3726 | + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> |
3727 | + <dc:title /> |
3728 | + </cc:Work> |
3729 | + </rdf:RDF> |
3730 | + </metadata> |
3731 | + <g |
3732 | + inkscape:label="Layer 1" |
3733 | + inkscape:groupmode="layer" |
3734 | + id="layer1" |
3735 | + transform="translate(4.2039363e-7,-962.3622)"> |
3736 | + <g |
3737 | + id="g4978" |
3738 | + transform="matrix(0.99934414,0,0,1,-106.92982,549.00002)"> |
3739 | + <g |
3740 | + id="g4674" |
3741 | + transform="matrix(1.0006563,0,0,1,-155.17195,-2.6171874e-6)"> |
3742 | + <rect |
3743 | + y="431.36218" |
3744 | + x="262" |
3745 | + height="72" |
3746 | + width="72" |
3747 | + id="rect4869" |
3748 | + style="opacity:0.01000001;color:#000000;fill:none;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> |
3749 | + <path |
3750 | + style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3751 | + d="m 320.5,419.36218 c 6.5,0 7.49965,0 7.49979,7 l 2.1e-4,10 c 1.5e-4,7 -1,7 -7.5,7 -6.5,0 -7.50015,0 -7.5,-7 l 2.1e-4,-9.99997 c 1.4e-4,-7.00003 0.99979,-7.00003 7.49979,-7.00003 z" |
3752 | + id="rect4871" |
3753 | + inkscape:connector-curvature="0" |
3754 | + sodipodi:nodetypes="zsszssz" /> |
3755 | + <path |
3756 | + style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3757 | + d="m 262,428.36218 0,6 45,0 0,-6 z m 72,0 0,6 18,0 0,-6 z" |
3758 | + id="rect4882" |
3759 | + inkscape:connector-curvature="0" |
3760 | + sodipodi:nodetypes="cccccccccc" /> |
3761 | + <path |
3762 | + id="path4887" |
3763 | + d="m 262,455.36218 0,6 18,0 0,-6 z m 45,0 0,6 45,0 0,-6 z" |
3764 | + style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3765 | + inkscape:connector-curvature="0" |
3766 | + sodipodi:nodetypes="cccccccccc" /> |
3767 | + <path |
3768 | + sodipodi:nodetypes="cccccccccc" |
3769 | + inkscape:connector-curvature="0" |
3770 | + style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3771 | + d="m 262,482.36218 0,6 45,0 0,-6 z m 72,0 0,6 18,0 0,-6 z" |
3772 | + id="path4889" /> |
3773 | + <rect |
3774 | + y="413.36218" |
3775 | + x="262" |
3776 | + height="90" |
3777 | + width="90" |
3778 | + id="rect2993" |
3779 | + style="color:#000000;fill:none;stroke:none;stroke-width:11.80000019;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> |
3780 | + <path |
3781 | + sodipodi:nodetypes="zsszssz" |
3782 | + inkscape:connector-curvature="0" |
3783 | + id="path3775" |
3784 | + d="m 293.5,446.36218 c 6.5,0 7.49965,0 7.49979,7 l 2.1e-4,10 c 1.5e-4,7 -1,7 -7.5,7 -6.5,0 -7.50015,0 -7.5,-7 l 2.1e-4,-9.99997 c 1.4e-4,-7.00003 0.99979,-7.00003 7.49979,-7.00003 z" |
3785 | + style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> |
3786 | + <path |
3787 | + style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3788 | + d="m 320.5,473.36218 c 6.5,0 7.49965,0 7.49979,7 l 2.1e-4,10 c 1.5e-4,7 -1,7 -7.5,7 -6.5,0 -7.50015,0 -7.5,-7 l 2.1e-4,-9.99997 c 1.4e-4,-7.00003 0.99979,-7.00003 7.49979,-7.00003 z" |
3789 | + id="path3777" |
3790 | + inkscape:connector-curvature="0" |
3791 | + sodipodi:nodetypes="zsszssz" /> |
3792 | + </g> |
3793 | + </g> |
3794 | + </g> |
3795 | +</svg> |
3796 | |
3797 | === added file 'graphics/share.png' |
3798 | Binary files graphics/share.png 1970-01-01 00:00:00 +0000 and graphics/share.png 2014-05-14 17:33:57 +0000 differ |
3799 | === added file 'graphics/share@32.svg' |
3800 | --- graphics/share@32.svg 1970-01-01 00:00:00 +0000 |
3801 | +++ graphics/share@32.svg 2014-05-14 17:33:57 +0000 |
3802 | @@ -0,0 +1,96 @@ |
3803 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
3804 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> |
3805 | + |
3806 | +<svg |
3807 | + xmlns:dc="http://purl.org/dc/elements/1.1/" |
3808 | + xmlns:cc="http://creativecommons.org/ns#" |
3809 | + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
3810 | + xmlns:svg="http://www.w3.org/2000/svg" |
3811 | + xmlns="http://www.w3.org/2000/svg" |
3812 | + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
3813 | + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
3814 | + width="90" |
3815 | + height="90" |
3816 | + id="svg3140" |
3817 | + version="1.1" |
3818 | + inkscape:version="0.48.3.1 r9886" |
3819 | + sodipodi:docname="share@30.svg"> |
3820 | + <defs |
3821 | + id="defs3142" /> |
3822 | + <sodipodi:namedview |
3823 | + id="base" |
3824 | + pagecolor="#ffffff" |
3825 | + bordercolor="#666666" |
3826 | + borderopacity="1.0" |
3827 | + inkscape:pageopacity="0.0" |
3828 | + inkscape:pageshadow="2" |
3829 | + inkscape:zoom="6.3664629" |
3830 | + inkscape:cx="42.15056" |
3831 | + inkscape:cy="44.663717" |
3832 | + inkscape:document-units="px" |
3833 | + inkscape:current-layer="g3441-4" |
3834 | + showgrid="true" |
3835 | + inkscape:window-width="1920" |
3836 | + inkscape:window-height="1029" |
3837 | + inkscape:window-x="0" |
3838 | + inkscape:window-y="24" |
3839 | + inkscape:window-maximized="1" |
3840 | + inkscape:snap-global="true" |
3841 | + fit-margin-top="0" |
3842 | + fit-margin-left="0" |
3843 | + fit-margin-right="0" |
3844 | + fit-margin-bottom="0"> |
3845 | + <inkscape:grid |
3846 | + type="xygrid" |
3847 | + id="grid3178" |
3848 | + empspacing="6" |
3849 | + visible="true" |
3850 | + enabled="true" |
3851 | + snapvisiblegridlinesonly="true" |
3852 | + originx="0px" |
3853 | + originy="-1.7382813e-05px" /> |
3854 | + </sodipodi:namedview> |
3855 | + <metadata |
3856 | + id="metadata3145"> |
3857 | + <rdf:RDF> |
3858 | + <cc:Work |
3859 | + rdf:about=""> |
3860 | + <dc:format>image/svg+xml</dc:format> |
3861 | + <dc:type |
3862 | + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> |
3863 | + <dc:title /> |
3864 | + </cc:Work> |
3865 | + </rdf:RDF> |
3866 | + </metadata> |
3867 | + <g |
3868 | + inkscape:label="Layer 1" |
3869 | + inkscape:groupmode="layer" |
3870 | + id="layer1" |
3871 | + transform="translate(0,-962.36218)"> |
3872 | + <g |
3873 | + id="g4978" |
3874 | + transform="translate(-60,548.00002)"> |
3875 | + <g |
3876 | + style="display:inline" |
3877 | + inkscape:label="Layer 1" |
3878 | + id="g3441-4" |
3879 | + transform="matrix(0.99999833,0,0,1,60,-548.00002)"> |
3880 | + <path |
3881 | + sodipodi:type="inkscape:offset" |
3882 | + inkscape:radius="-0.31838349" |
3883 | + inkscape:original="M 24.5 1017.375 C 21.683495 1017.386 19.129252 1019.8328 19.15625 1022.6875 C 19.10523 1024.7025 18.477924 1026.8931 16.6875 1028.0312 C 14.928548 1029.3646 12.623753 1028.7898 10.59375 1028.875 C 8.0503952 1029.1104 6.0137365 1031.4714 5.875 1033.9375 C 5.5443658 1036.9979 8.260099 1040.0778 11.40625 1039.875 C 13.365705 1039.7298 15.622444 1039.6396 17.15625 1041.0938 C 18.814084 1042.3961 19.09263 1044.5982 19.21875 1046.5625 C 19.461671 1049.9937 23.46779 1052.2857 26.59375 1051 C 29.575663 1049.9779 31.072138 1046.1852 29.59375 1043.4062 C 28.600866 1041.3589 26.30781 1040.0344 24.03125 1040.3438 C 22.04021 1040.5857 19.786406 1040.2924 18.40625 1038.6875 C 16.702625 1036.8125 16.61443 1033.9255 17.40625 1031.625 C 18.25454 1029.3292 20.800946 1027.9984 23.1875 1028.3125 C 24.95755 1028.5278 26.909137 1028.3777 28.25 1027.0625 C 30.728542 1025.0571 30.788794 1020.8982 28.375 1018.8125 C 27.334787 1017.8485 25.916691 1017.3405 24.5 1017.375 z " |
3884 | + style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3885 | + id="path2991" |
3886 | + d="m 24.5,1017.6875 c -2.632867,0.01 -5.056436,2.3369 -5.03125,5 -0.05219,2.0614 -0.70521,4.3682 -2.59375,5.5937 -0.01213,0.01 -0.01908,0.022 -0.03125,0.031 -0.941881,0.6982 -2.026015,0.9033 -3.09375,0.9375 -1.07083,0.034 -2.152687,-0.1001 -3.125,-0.062 -0.0097,4e-4 -0.02155,-4e-4 -0.03125,0 -2.3505987,0.2351 -4.2772414,2.4881 -4.40625,4.7813 -0.3081864,2.8526 2.2595836,5.7824 5.1875,5.5937 1.954564,-0.1448 4.318532,-0.252 5.96875,1.2813 0.01112,0.01 0.0202,0.021 0.03125,0.031 1.748744,1.4022 2.030053,3.6908 2.15625,5.6562 0.226212,3.1952 4.023145,5.3862 6.9375,4.1876 a 0.31841532,0.31841532 0 0 1 0.03125,-0.031 c 2.784288,-0.9544 4.192635,-4.5307 2.8125,-7.125 a 0.31841532,0.31841532 0 0 1 0,-0.031 c -0.932425,-1.9226 -3.121855,-3.1642 -5.25,-2.875 -2.050184,0.2491 -4.426871,-0.03 -5.90625,-1.75 -1.809332,-1.9913 -1.883366,-4.9901 -1.0625,-7.375 a 0.31841532,0.31841532 0 0 1 0,-0.031 c 0.906221,-2.4526 3.594049,-3.8331 6.125,-3.5 1.724598,0.2098 3.573245,0.059 4.8125,-1.1562 a 0.31841532,0.31841532 0 0 1 0.03125,-0.031 c 2.31317,-1.8716 2.347131,-5.8029 0.09375,-7.75 a 0.31841532,0.31841532 0 0 1 0,-0.031 c -0.975302,-0.9038 -2.320772,-1.3762 -3.65625,-1.3437 z" |
3887 | + transform="matrix(2.5495252,0,0,2.5175823,-0.90522399,-1596.7459)" /> |
3888 | + <rect |
3889 | + style="opacity:0.1;color:#000000;fill:none;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" |
3890 | + id="rect2988" |
3891 | + width="90.000153" |
3892 | + height="90" |
3893 | + x="0" |
3894 | + y="962.36218" /> |
3895 | + </g> |
3896 | + </g> |
3897 | + </g> |
3898 | +</svg> |
3899 | |
3900 | === added file 'graphics/smile.png' |
3901 | Binary files graphics/smile.png 1970-01-01 00:00:00 +0000 and graphics/smile.png 2014-05-14 17:33:57 +0000 differ |
3902 | === added file 'graphics/spoiler.png' |
3903 | Binary files graphics/spoiler.png 1970-01-01 00:00:00 +0000 and graphics/spoiler.png 2014-05-14 17:33:57 +0000 differ |
3904 | === added file 'graphics/star.png' |
3905 | Binary files graphics/star.png 1970-01-01 00:00:00 +0000 and graphics/star.png 2014-05-14 17:33:57 +0000 differ |
3906 | === added file 'graphics/time@64.png' |
3907 | Binary files graphics/time@64.png 1970-01-01 00:00:00 +0000 and graphics/time@64.png 2014-05-14 17:33:57 +0000 differ |
3908 | === added file 'graphics/tmdb.png' |
3909 | Binary files graphics/tmdb.png 1970-01-01 00:00:00 +0000 and graphics/tmdb.png 2014-05-14 17:33:57 +0000 differ |
3910 | === added file 'graphics/today_sidebar@48.png' |
3911 | Binary files graphics/today_sidebar@48.png 1970-01-01 00:00:00 +0000 and graphics/today_sidebar@48.png 2014-05-14 17:33:57 +0000 differ |
3912 | === added file 'graphics/top_rated@48.png' |
3913 | Binary files graphics/top_rated@48.png 1970-01-01 00:00:00 +0000 and graphics/top_rated@48.png 2014-05-14 17:33:57 +0000 differ |
3914 | === added file 'graphics/trailer.png' |
3915 | Binary files graphics/trailer.png 1970-01-01 00:00:00 +0000 and graphics/trailer.png 2014-05-14 17:33:57 +0000 differ |
3916 | === added file 'graphics/trailer2.png' |
3917 | Binary files graphics/trailer2.png 1970-01-01 00:00:00 +0000 and graphics/trailer2.png 2014-05-14 17:33:57 +0000 differ |
3918 | === added file 'graphics/trakt@16.png' |
3919 | Binary files graphics/trakt@16.png 1970-01-01 00:00:00 +0000 and graphics/trakt@16.png 2014-05-14 17:33:57 +0000 differ |
3920 | === added file 'graphics/trakt_logo.png' |
3921 | Binary files graphics/trakt_logo.png 1970-01-01 00:00:00 +0000 and graphics/trakt_logo.png 2014-05-14 17:33:57 +0000 differ |
3922 | === added file 'graphics/trending_icon@48.png' |
3923 | Binary files graphics/trending_icon@48.png 1970-01-01 00:00:00 +0000 and graphics/trending_icon@48.png 2014-05-14 17:33:57 +0000 differ |
3924 | === added file 'graphics/twitter_logo.png' |
3925 | Binary files graphics/twitter_logo.png 1970-01-01 00:00:00 +0000 and graphics/twitter_logo.png 2014-05-14 17:33:57 +0000 differ |
3926 | === added file 'graphics/unwatched_gray.png' |
3927 | Binary files graphics/unwatched_gray.png 1970-01-01 00:00:00 +0000 and graphics/unwatched_gray.png 2014-05-14 17:33:57 +0000 differ |
3928 | === added file 'graphics/unwatched_sidebar@48.png' |
3929 | Binary files graphics/unwatched_sidebar@48.png 1970-01-01 00:00:00 +0000 and graphics/unwatched_sidebar@48.png 2014-05-14 17:33:57 +0000 differ |
3930 | === added file 'graphics/upcoming@48.png' |
3931 | Binary files graphics/upcoming@48.png 1970-01-01 00:00:00 +0000 and graphics/upcoming@48.png 2014-05-14 17:33:57 +0000 differ |
3932 | === added file 'graphics/user.png' |
3933 | Binary files graphics/user.png 1970-01-01 00:00:00 +0000 and graphics/user.png 2014-05-14 17:33:57 +0000 differ |
3934 | === added file 'graphics/votedown.png' |
3935 | Binary files graphics/votedown.png 1970-01-01 00:00:00 +0000 and graphics/votedown.png 2014-05-14 17:33:57 +0000 differ |
3936 | === added file 'graphics/voteup.png' |
3937 | Binary files graphics/voteup.png 1970-01-01 00:00:00 +0000 and graphics/voteup.png 2014-05-14 17:33:57 +0000 differ |
3938 | === added file 'graphics/watched.png' |
3939 | Binary files graphics/watched.png 1970-01-01 00:00:00 +0000 and graphics/watched.png 2014-05-14 17:33:57 +0000 differ |
3940 | === added file 'graphics/watched_black.png' |
3941 | Binary files graphics/watched_black.png 1970-01-01 00:00:00 +0000 and graphics/watched_black.png 2014-05-14 17:33:57 +0000 differ |
3942 | === added file 'graphics/watched_gray.png' |
3943 | Binary files graphics/watched_gray.png 1970-01-01 00:00:00 +0000 and graphics/watched_gray.png 2014-05-14 17:33:57 +0000 differ |
3944 | === added file 'graphics/watchlist.png' |
3945 | Binary files graphics/watchlist.png 1970-01-01 00:00:00 +0000 and graphics/watchlist.png 2014-05-14 17:33:57 +0000 differ |
3946 | === added file 'graphics/watchlist_black.png' |
3947 | Binary files graphics/watchlist_black.png 1970-01-01 00:00:00 +0000 and graphics/watchlist_black.png 2014-05-14 17:33:57 +0000 differ |
3948 | === added file 'graphics/watchlist_sidebar@48.png' |
3949 | Binary files graphics/watchlist_sidebar@48.png 1970-01-01 00:00:00 +0000 and graphics/watchlist_sidebar@48.png 2014-05-14 17:33:57 +0000 differ |
3950 | === added file 'manifest.json' |
3951 | --- manifest.json 1970-01-01 00:00:00 +0000 |
3952 | +++ manifest.json 2014-05-14 17:33:57 +0000 |
3953 | @@ -0,0 +1,15 @@ |
3954 | +{ |
3955 | + "architecture": "all", |
3956 | + "description": "description of Flashback", |
3957 | + "framework": "ubuntu-sdk-14.04-qml-dev1", |
3958 | + "hooks": { |
3959 | + "Cliffhanger": { |
3960 | + "apparmor": "Flashback.json", |
3961 | + "desktop": "Flashback.desktop" |
3962 | + } |
3963 | + }, |
3964 | + "maintainer": "Nekhelesh Ramananthan <krnekhelesh@gmail.com>", |
3965 | + "name": "com.ubuntu.developer.nik90.flashback", |
3966 | + "title": "Flashback", |
3967 | + "version": "0.3.3" |
3968 | +} |
3969 | \ No newline at end of file |
3970 | |
3971 | === renamed file 'manifest.json' => 'manifest.json.moved' |
3972 | === added directory 'models' |
3973 | === renamed directory 'models' => 'models.moved' |
3974 | === added file 'models/Activity.qml' |
3975 | --- models/Activity.qml 1970-01-01 00:00:00 +0000 |
3976 | +++ models/Activity.qml 2014-05-14 17:33:57 +0000 |
3977 | @@ -0,0 +1,97 @@ |
3978 | +/* |
3979 | + * Flashback - Entertainment app for Ubuntu |
3980 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
3981 | + * |
3982 | + * This program is free software: you can redistribute it and/or modify |
3983 | + * it under the terms of the GNU General Public License version 3 as |
3984 | + * published by the Free Software Foundation. |
3985 | + * |
3986 | + * This program is distributed in the hope that it will be useful, |
3987 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
3988 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3989 | + * GNU General Public License for more details. |
3990 | + * |
3991 | + * You should have received a copy of the GNU General Public License |
3992 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
3993 | + * |
3994 | + */ |
3995 | + |
3996 | +import QtQuick 2.0 |
3997 | +import Ubuntu.Components 0.1 |
3998 | +import "../backend/backend.js" as Backend |
3999 | + |
4000 | +/* |
4001 | + Component to keep track of user activity (movies and tv show) and update the document automatically |
4002 | + */ |
4003 | +BasePostModel { |
4004 | + id: userActivity |
4005 | + |
4006 | + property string username |
4007 | + property string password |
4008 | + property var activityDocument |
4009 | + |
4010 | + Component.onCompleted: getUserActivityOnline() |
4011 | + Component.onDestruction: setDefaultDatabase() |
4012 | + |
4013 | + // Function to get user's movie activity online. It automatically updates the local database if there is user activity |
4014 | + function getUserActivityOnline() { |
4015 | + console.log("[LOG]: Checking for user activity") |
4016 | + source = Backend.userActivity(username) |
4017 | + createMessage(username, password) |
4018 | + sendMessage() |
4019 | + } |
4020 | + |
4021 | + // Function here to set the user movie activity database to defaults. |
4022 | + function setDefaultDatabase() { |
4023 | + console.log("[LOG]: Resetting user activity documents") |
4024 | + activityDocument = { |
4025 | + type: "default", |
4026 | + name: "default", |
4027 | + id: "default", |
4028 | + imdb: "default", |
4029 | + runtime: "default", |
4030 | + trailer: "default", |
4031 | + year: "default", |
4032 | + episode_title: "default", |
4033 | + season: "default", |
4034 | + number: "default", |
4035 | + poster: "default", |
4036 | + fanart: "default" |
4037 | + } |
4038 | + } |
4039 | + |
4040 | + function updateJSONModel() { |
4041 | + if(reply.type === "movie") { |
4042 | + console.log("[LOG]: User is watching a movie -> " + reply.movie.title) |
4043 | + activityDocument = { |
4044 | + type: "movie", |
4045 | + name: reply.movie.title, |
4046 | + id: reply.movie.tmdb_id, |
4047 | + imdb: reply.movie.imdb_id, |
4048 | + runtime: reply.movie.runtime, |
4049 | + trailer: reply.movie.trailer, |
4050 | + year: reply.movie.year, |
4051 | + poster: get_thumb(reply.movie.images.poster, '-138'), |
4052 | + fanart: get_thumb(reply.movie.images.fanart, '-940') |
4053 | + } |
4054 | + } |
4055 | + else if(reply.type === "episode") { |
4056 | + console.log("[LOG]: User is watching a tv show -> " + reply.show.title) |
4057 | + activityDocument = { |
4058 | + type: "episode", |
4059 | + name: reply.show.title, |
4060 | + id: reply.show.tvdb_id, |
4061 | + imdb: reply.show.imdb_id, |
4062 | + episode_title: reply.episode.title, |
4063 | + season: reply.episode.season, |
4064 | + number: reply.episode.number, |
4065 | + poster: get_thumb(reply.show.images.poster, '-138'), |
4066 | + fanart: get_thumb(reply.show.images.fanart, '-940') |
4067 | + } |
4068 | + } |
4069 | + else { |
4070 | + console.log("[LOG]: User is not watching anything") |
4071 | + setDefaultDatabase() |
4072 | + } |
4073 | + } |
4074 | +} |
4075 | |
4076 | === added file 'models/AiringShows.qml' |
4077 | --- models/AiringShows.qml 1970-01-01 00:00:00 +0000 |
4078 | +++ models/AiringShows.qml 2014-05-14 17:33:57 +0000 |
4079 | @@ -0,0 +1,66 @@ |
4080 | +/* |
4081 | + * Flashback - Entertainment app for Ubuntu |
4082 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4083 | + * |
4084 | + * This program is free software: you can redistribute it and/or modify |
4085 | + * it under the terms of the GNU General Public License version 3 as |
4086 | + * published by the Free Software Foundation. |
4087 | + * |
4088 | + * This program is distributed in the hope that it will be useful, |
4089 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4090 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4091 | + * GNU General Public License for more details. |
4092 | + * |
4093 | + * You should have received a copy of the GNU General Public License |
4094 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4095 | + * |
4096 | + */ |
4097 | + |
4098 | +import QtQuick 2.0 |
4099 | +import "../backend/backend.js" as Backend |
4100 | + |
4101 | +BasePostModel { |
4102 | + id: airingShowsModel |
4103 | + |
4104 | + // Property to store the time when the model was updated |
4105 | + property string lastUpdated: "default" |
4106 | + |
4107 | + // Property to store the last action performed |
4108 | + property string lastAction: "default" |
4109 | + |
4110 | + // Property to control if watched episodes should be hidden or not |
4111 | + property bool hideWatched: false |
4112 | + |
4113 | + function fetchData(username, password, date, days) { |
4114 | + source = Backend.userShows(username, date, days) |
4115 | + createMessage(username, password) |
4116 | + sendMessage() |
4117 | + } |
4118 | + |
4119 | + function updateJSONModel() { |
4120 | + model.clear() |
4121 | + for ( var key in reply ) { |
4122 | + var jo = reply[key]; |
4123 | + for( var innerkey in jo.episodes ) { |
4124 | + var mo = jo.episodes[innerkey] |
4125 | + if (hideWatched && mo.episode.watched == true) |
4126 | + continue |
4127 | + // Only show episodes airing of tv shows that are watchlisted by the user |
4128 | + if (mo.show.in_watchlist == true) { |
4129 | + model.append({ |
4130 | + 'name': mo.show.title, |
4131 | + 'year': mo.show.year, |
4132 | + 'id': mo.show.tvdb_id, |
4133 | + 'imdb_id': mo.show.imdb_id, |
4134 | + 'season': mo.episode.season, |
4135 | + 'episode': mo.episode.number, |
4136 | + 'episode_name': mo.episode.title, |
4137 | + 'episode_air_date': mo.episode.first_aired_iso, |
4138 | + 'watched': mo.episode.watched ? mo.episode.watched.toString() : "", |
4139 | + 'thumb_url': get_thumb(mo.show.images.poster, '-300') |
4140 | + }); |
4141 | + } |
4142 | + } |
4143 | + } |
4144 | + } |
4145 | +} |
4146 | |
4147 | === added file 'models/BaseModel.qml' |
4148 | --- models/BaseModel.qml 1970-01-01 00:00:00 +0000 |
4149 | +++ models/BaseModel.qml 2014-05-14 17:33:57 +0000 |
4150 | @@ -0,0 +1,58 @@ |
4151 | +/* |
4152 | + * Flashback - Entertainment app for Ubuntu |
4153 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4154 | + * |
4155 | + * This program is free software: you can redistribute it and/or modify |
4156 | + * it under the terms of the GNU General Public License version 3 as |
4157 | + * published by the Free Software Foundation. |
4158 | + * |
4159 | + * This program is distributed in the hope that it will be useful, |
4160 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4161 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4162 | + * GNU General Public License for more details. |
4163 | + * |
4164 | + * You should have received a copy of the GNU General Public License |
4165 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4166 | + * |
4167 | + */ |
4168 | + |
4169 | +import QtQuick 2.0 |
4170 | + |
4171 | +Item { |
4172 | + id: baseModel |
4173 | + property string source: "" |
4174 | + property string json: "" |
4175 | + property int status: XMLHttpRequest.UNSENT |
4176 | + |
4177 | + property ListModel model: ListModel { id: model } |
4178 | + property alias count: model.count |
4179 | + |
4180 | + signal updated() |
4181 | + |
4182 | + onSourceChanged: { |
4183 | + var xhr = new XMLHttpRequest; |
4184 | + xhr.open("GET", source); |
4185 | + xhr.onreadystatechange = function() { |
4186 | + status = xhr.readyState; |
4187 | + if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) |
4188 | + json = xhr.responseText; |
4189 | + } |
4190 | + xhr.send(); |
4191 | + } |
4192 | + |
4193 | + onJsonChanged: { |
4194 | + if ( json != "" ) { |
4195 | + updateJSONModel(); |
4196 | + updated(); |
4197 | + } |
4198 | + } |
4199 | + |
4200 | + function thumbnail_url(thumb_path, type) { |
4201 | + if (thumb_path) |
4202 | + return "http://d3gtl9l2a4fn1j.cloudfront.net/t/p/" + "w185/" + thumb_path; |
4203 | + else if (type !== "person") |
4204 | + return Qt.resolvedUrl("../graphics/no-poster.jpg"); |
4205 | + else if (type === "person") |
4206 | + return Qt.resolvedUrl("../graphics/no-passport.png"); |
4207 | + } |
4208 | +} |
4209 | |
4210 | === added file 'models/BasePostModel.qml' |
4211 | --- models/BasePostModel.qml 1970-01-01 00:00:00 +0000 |
4212 | +++ models/BasePostModel.qml 2014-05-14 17:33:57 +0000 |
4213 | @@ -0,0 +1,64 @@ |
4214 | +/* |
4215 | + * Flashback - Entertainment app for Ubuntu |
4216 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4217 | + * |
4218 | + * This program is free software: you can redistribute it and/or modify |
4219 | + * it under the terms of the GNU General Public License version 3 as |
4220 | + * published by the Free Software Foundation. |
4221 | + * |
4222 | + * This program is distributed in the hope that it will be useful, |
4223 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4224 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4225 | + * GNU General Public License for more details. |
4226 | + * |
4227 | + * You should have received a copy of the GNU General Public License |
4228 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4229 | + * |
4230 | + */ |
4231 | + |
4232 | +import QtQuick 2.0 |
4233 | + |
4234 | +Item { |
4235 | + id: basePostModel |
4236 | + property string source: "" |
4237 | + property string json: "" |
4238 | + property int status: XMLHttpRequest.UNSENT |
4239 | + |
4240 | + property var reply |
4241 | + property var message |
4242 | + |
4243 | + property string username |
4244 | + property string password |
4245 | + |
4246 | + property ListModel model: ListModel { id: model } |
4247 | + property alias count: model.count |
4248 | + |
4249 | + signal updated() |
4250 | + |
4251 | + function createMessage(username, password) { |
4252 | + message = JSON.stringify({username: username, password: password}) |
4253 | + } |
4254 | + |
4255 | + function get_thumb(thumb_url, size) { |
4256 | + return thumb_url.split('.jpg')[0] + size + '.jpg' |
4257 | + } |
4258 | + |
4259 | + function sendMessage() { |
4260 | + var xhr = new XMLHttpRequest(); |
4261 | + xhr.open("POST", source); |
4262 | + |
4263 | + xhr.onreadystatechange = function() { |
4264 | + status = xhr.readyState; |
4265 | + if (xhr.readyState == XMLHttpRequest.DONE) |
4266 | + getReply(json = xhr.responseText); |
4267 | + } |
4268 | + xhr.send(message); |
4269 | + } |
4270 | + |
4271 | + function getReply(json) { |
4272 | + if ( json != "" ) { |
4273 | + reply = JSON.parse(json) |
4274 | + updateJSONModel(); |
4275 | + } |
4276 | + } |
4277 | +} |
4278 | |
4279 | === added file 'models/Cast.qml' |
4280 | --- models/Cast.qml 1970-01-01 00:00:00 +0000 |
4281 | +++ models/Cast.qml 2014-05-14 17:33:57 +0000 |
4282 | @@ -0,0 +1,38 @@ |
4283 | +/* |
4284 | + * Flashback - Entertainment app for Ubuntu |
4285 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4286 | + * |
4287 | + * This program is free software: you can redistribute it and/or modify |
4288 | + * it under the terms of the GNU General Public License version 3 as |
4289 | + * published by the Free Software Foundation. |
4290 | + * |
4291 | + * This program is distributed in the hope that it will be useful, |
4292 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4293 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4294 | + * GNU General Public License for more details. |
4295 | + * |
4296 | + * You should have received a copy of the GNU General Public License |
4297 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4298 | + * |
4299 | + */ |
4300 | + |
4301 | +import QtQuick 2.0 |
4302 | + |
4303 | +BaseModel { |
4304 | + id: cast |
4305 | + |
4306 | + function updateJSONModel() { |
4307 | + model.clear(); |
4308 | + |
4309 | + var objectArray = JSON.parse(json).cast; |
4310 | + for ( var key in objectArray ) { |
4311 | + var jo = objectArray[key]; |
4312 | + model.append({ |
4313 | + 'name': jo.name, |
4314 | + 'character': jo.character, |
4315 | + 'id': jo.id, |
4316 | + 'thumb_url': thumbnail_url(jo.profile_path, "person") |
4317 | + }); |
4318 | + } |
4319 | + } |
4320 | +} |
4321 | |
4322 | === added file 'models/Crew.qml' |
4323 | --- models/Crew.qml 1970-01-01 00:00:00 +0000 |
4324 | +++ models/Crew.qml 2014-05-14 17:33:57 +0000 |
4325 | @@ -0,0 +1,37 @@ |
4326 | +/* |
4327 | + * Flashback - Entertainment app for Ubuntu |
4328 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4329 | + * |
4330 | + * This program is free software: you can redistribute it and/or modify |
4331 | + * it under the terms of the GNU General Public License version 3 as |
4332 | + * published by the Free Software Foundation. |
4333 | + * |
4334 | + * This program is distributed in the hope that it will be useful, |
4335 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4336 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4337 | + * GNU General Public License for more details. |
4338 | + * |
4339 | + * You should have received a copy of the GNU General Public License |
4340 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4341 | + * |
4342 | + */ |
4343 | + |
4344 | +import QtQuick 2.0 |
4345 | + |
4346 | +BaseModel { |
4347 | + id: crew |
4348 | + function updateJSONModel() { |
4349 | + model.clear(); |
4350 | + |
4351 | + var objectArray = JSON.parse(json).crew; |
4352 | + for ( var key in objectArray ) { |
4353 | + var jo = objectArray[key]; |
4354 | + model.append({ |
4355 | + 'name': jo.name, |
4356 | + 'department': jo.department, |
4357 | + 'id': jo.id, |
4358 | + 'thumb_url': thumbnail_url(jo.profile_path, "person") |
4359 | + }); |
4360 | + } |
4361 | + } |
4362 | +} |
4363 | |
4364 | === added file 'models/Episode.qml' |
4365 | --- models/Episode.qml 1970-01-01 00:00:00 +0000 |
4366 | +++ models/Episode.qml 2014-05-14 17:33:57 +0000 |
4367 | @@ -0,0 +1,55 @@ |
4368 | +/* |
4369 | + * Flashback - Entertainment app for Ubuntu |
4370 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4371 | + * |
4372 | + * This program is free software: you can redistribute it and/or modify |
4373 | + * it under the terms of the GNU General Public License version 3 as |
4374 | + * published by the Free Software Foundation. |
4375 | + * |
4376 | + * This program is distributed in the hope that it will be useful, |
4377 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4378 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4379 | + * GNU General Public License for more details. |
4380 | + * |
4381 | + * You should have received a copy of the GNU General Public License |
4382 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4383 | + * |
4384 | + */ |
4385 | + |
4386 | +import QtQuick 2.0 |
4387 | + |
4388 | +BasePostModel { |
4389 | + id: episodeDetails |
4390 | + |
4391 | + property variant attributes: { |
4392 | + 'name': '', |
4393 | + 'year': 0, |
4394 | + 'episode_name': '', |
4395 | + 'overview': '', |
4396 | + 'episode_air_date': '', |
4397 | + 'voteAverage': 0.0, |
4398 | + 'voteCount': 0, |
4399 | + 'userVote': 0, |
4400 | + 'thumb_url': '' |
4401 | + } |
4402 | + |
4403 | + function updateJSONModel() { |
4404 | + attributes = { |
4405 | + 'name': reply.show.title, |
4406 | + 'year': parseInt(reply.show.year), |
4407 | + 'id': reply.show.tvdb_id, |
4408 | + 'imdb_id': reply.show.imdb_id, |
4409 | + 'season': parseInt(reply.episode.season), |
4410 | + 'episode': parseInt(reply.episode.number), |
4411 | + 'episode_name': reply.episode.title, |
4412 | + 'overview': reply.episode.overview, |
4413 | + 'episode_air_date': reply.episode.first_aired_utc, |
4414 | + 'voteAverage': parseFloat(reply.episode.ratings.percentage), |
4415 | + 'voteCount': parseInt(reply.episode.ratings.votes), |
4416 | + 'userVote': parseInt(reply.episode.rating_advanced), |
4417 | + 'watched': reply.episode.watched ? reply.episode.watched.toString() : "", |
4418 | + 'thumb_url': reply.episode.images.screen |
4419 | + }; |
4420 | + updated() |
4421 | + } |
4422 | +} |
4423 | |
4424 | === added file 'models/Genres.qml' |
4425 | --- models/Genres.qml 1970-01-01 00:00:00 +0000 |
4426 | +++ models/Genres.qml 2014-05-14 17:33:57 +0000 |
4427 | @@ -0,0 +1,35 @@ |
4428 | +/* |
4429 | + * Flashback - Entertainment app for Ubuntu |
4430 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4431 | + * |
4432 | + * This program is free software: you can redistribute it and/or modify |
4433 | + * it under the terms of the GNU General Public License version 3 as |
4434 | + * published by the Free Software Foundation. |
4435 | + * |
4436 | + * This program is distributed in the hope that it will be useful, |
4437 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4438 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4439 | + * GNU General Public License for more details. |
4440 | + * |
4441 | + * You should have received a copy of the GNU General Public License |
4442 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4443 | + * |
4444 | + */ |
4445 | + |
4446 | +import QtQuick 2.0 |
4447 | + |
4448 | +BaseModel { |
4449 | + id: genres |
4450 | + function updateJSONModel() { |
4451 | + model.clear(); |
4452 | + |
4453 | + var objectArray = JSON.parse(json).genres; |
4454 | + for ( var key in objectArray ) { |
4455 | + var jo = objectArray[key]; |
4456 | + model.append({ |
4457 | + 'name': jo.name, |
4458 | + 'id': jo.id |
4459 | + }); |
4460 | + } |
4461 | + } |
4462 | +} |
4463 | |
4464 | === added file 'models/Movie.qml' |
4465 | --- models/Movie.qml 1970-01-01 00:00:00 +0000 |
4466 | +++ models/Movie.qml 2014-05-14 17:33:57 +0000 |
4467 | @@ -0,0 +1,57 @@ |
4468 | +/* |
4469 | + * Flashback - Entertainment app for Ubuntu |
4470 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4471 | + * |
4472 | + * This program is free software: you can redistribute it and/or modify |
4473 | + * it under the terms of the GNU General Public License version 3 as |
4474 | + * published by the Free Software Foundation. |
4475 | + * |
4476 | + * This program is distributed in the hope that it will be useful, |
4477 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4478 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4479 | + * GNU General Public License for more details. |
4480 | + * |
4481 | + * You should have received a copy of the GNU General Public License |
4482 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4483 | + * |
4484 | + */ |
4485 | + |
4486 | +import QtQuick 2.0 |
4487 | + |
4488 | +BaseModel { |
4489 | + id: movie |
4490 | + |
4491 | + property variant attributes: { |
4492 | + 'title': '', |
4493 | + 'homepage': '', |
4494 | + 'tagline': '', |
4495 | + 'overview': '', |
4496 | + 'releaseDate': '', |
4497 | + 'runtime': 0, |
4498 | + 'voteAverage': 0.0, |
4499 | + 'voteCount': 0, |
4500 | + 'genres': [], |
4501 | + 'thumb_url': '' |
4502 | + } |
4503 | + |
4504 | + function updateJSONModel() { |
4505 | + var ob = JSON.parse(json); |
4506 | + attributes = { |
4507 | + 'id': ob.id, |
4508 | + 'imdb_id': ob.imdb_id, |
4509 | + 'title': ob.title, |
4510 | + 'homepage': (ob.homepage || "") , |
4511 | + 'tagline': (ob.tagline || ""), |
4512 | + 'overview': (ob.overview || ""), |
4513 | + 'releaseDate': (ob.release_date || ""), |
4514 | + 'runtime': parseInt(ob.runtime), |
4515 | + 'voteAverage': parseFloat(ob.vote_average), |
4516 | + 'voteCount': parseInt(ob.vote_count), |
4517 | + 'genres': ob.genres, |
4518 | + 'thumb_url': thumbnail_url(ob.poster_path, "movie"), |
4519 | + 'creditsJson': JSON.stringify(ob.credits || {}), |
4520 | + 'trailersJson': JSON.stringify(ob.trailers || {}), |
4521 | + 'similarMoviesJson': JSON.stringify(ob.similar_movies || {}) |
4522 | + }; |
4523 | + } |
4524 | +} |
4525 | |
4526 | === added file 'models/Movies.qml' |
4527 | --- models/Movies.qml 1970-01-01 00:00:00 +0000 |
4528 | +++ models/Movies.qml 2014-05-14 17:33:57 +0000 |
4529 | @@ -0,0 +1,37 @@ |
4530 | +/* |
4531 | + * Flashback - Entertainment app for Ubuntu |
4532 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4533 | + * |
4534 | + * This program is free software: you can redistribute it and/or modify |
4535 | + * it under the terms of the GNU General Public License version 3 as |
4536 | + * published by the Free Software Foundation. |
4537 | + * |
4538 | + * This program is distributed in the hope that it will be useful, |
4539 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4540 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4541 | + * GNU General Public License for more details. |
4542 | + * |
4543 | + * You should have received a copy of the GNU General Public License |
4544 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4545 | + * |
4546 | + */ |
4547 | + |
4548 | +import QtQuick 2.0 |
4549 | + |
4550 | +BaseModel { |
4551 | + id: movies |
4552 | + |
4553 | + function updateJSONModel() { |
4554 | + model.clear(); |
4555 | + |
4556 | + var objectArray = JSON.parse(json).results; |
4557 | + for ( var key in objectArray ) { |
4558 | + var jo = objectArray[key]; |
4559 | + model.append({ |
4560 | + 'name': jo.title, |
4561 | + 'id': jo.id, |
4562 | + 'thumb_url': thumbnail_url(jo.poster_path, "movie") |
4563 | + }); |
4564 | + } |
4565 | + } |
4566 | +} |
4567 | |
4568 | === added file 'models/People.qml' |
4569 | --- models/People.qml 1970-01-01 00:00:00 +0000 |
4570 | +++ models/People.qml 2014-05-14 17:33:57 +0000 |
4571 | @@ -0,0 +1,36 @@ |
4572 | +/* |
4573 | + * Flashback - Entertainment app for Ubuntu |
4574 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4575 | + * |
4576 | + * This program is free software: you can redistribute it and/or modify |
4577 | + * it under the terms of the GNU General Public License version 3 as |
4578 | + * published by the Free Software Foundation. |
4579 | + * |
4580 | + * This program is distributed in the hope that it will be useful, |
4581 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4582 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4583 | + * GNU General Public License for more details. |
4584 | + * |
4585 | + * You should have received a copy of the GNU General Public License |
4586 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4587 | + * |
4588 | + */ |
4589 | + |
4590 | +import QtQuick 2.0 |
4591 | + |
4592 | +BaseModel { |
4593 | + id: people |
4594 | + function updateJSONModel() { |
4595 | + model.clear(); |
4596 | + |
4597 | + var objectArray = JSON.parse(json).results; |
4598 | + for ( var key in objectArray ) { |
4599 | + var jo = objectArray[key]; |
4600 | + model.append({ |
4601 | + 'name': jo.name, |
4602 | + 'id': jo.id, |
4603 | + 'thumb_url': thumbnail_url(jo.profile_path, "person") |
4604 | + }); |
4605 | + } |
4606 | + } |
4607 | +} |
4608 | |
4609 | === added file 'models/Person.qml' |
4610 | --- models/Person.qml 1970-01-01 00:00:00 +0000 |
4611 | +++ models/Person.qml 2014-05-14 17:33:57 +0000 |
4612 | @@ -0,0 +1,48 @@ |
4613 | +/* |
4614 | + * Flashback - Entertainment app for Ubuntu |
4615 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4616 | + * |
4617 | + * This program is free software: you can redistribute it and/or modify |
4618 | + * it under the terms of the GNU General Public License version 3 as |
4619 | + * published by the Free Software Foundation. |
4620 | + * |
4621 | + * This program is distributed in the hope that it will be useful, |
4622 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4623 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4624 | + * GNU General Public License for more details. |
4625 | + * |
4626 | + * You should have received a copy of the GNU General Public License |
4627 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4628 | + * |
4629 | + */ |
4630 | + |
4631 | +import QtQuick 2.0 |
4632 | + |
4633 | +BaseModel { |
4634 | + id: person |
4635 | + |
4636 | + property variant attributes: { |
4637 | + 'name': '', |
4638 | + 'biography': '', |
4639 | + 'birthday': '', |
4640 | + 'deathday': '', |
4641 | + 'homepage': '', |
4642 | + 'placeOfBirth': '', |
4643 | + 'thumb_url': '' |
4644 | + } |
4645 | + |
4646 | + function updateJSONModel() { |
4647 | + var ob = JSON.parse(json); |
4648 | + attributes = { |
4649 | + 'id': ob.id, |
4650 | + 'name': ob.name, |
4651 | + 'biography': ob.biography || "", |
4652 | + 'birthday': ob.birthday || "", |
4653 | + 'deathday': ob.deathday || "", |
4654 | + 'homepage': ob.homepage || "", |
4655 | + 'placeOfBirth': ob.place_of_birth || "", |
4656 | + 'thumb_url': thumbnail_url(ob.profile_path, "person"), |
4657 | + 'combinedCreditsJson': JSON.stringify(ob.combined_credits || {}) |
4658 | + }; |
4659 | + } |
4660 | +} |
4661 | |
4662 | === added file 'models/PersonCast.qml' |
4663 | --- models/PersonCast.qml 1970-01-01 00:00:00 +0000 |
4664 | +++ models/PersonCast.qml 2014-05-14 17:33:57 +0000 |
4665 | @@ -0,0 +1,40 @@ |
4666 | +/* |
4667 | + * Flashback - Entertainment app for Ubuntu |
4668 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4669 | + * |
4670 | + * This program is free software: you can redistribute it and/or modify |
4671 | + * it under the terms of the GNU General Public License version 3 as |
4672 | + * published by the Free Software Foundation. |
4673 | + * |
4674 | + * This program is distributed in the hope that it will be useful, |
4675 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4676 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4677 | + * GNU General Public License for more details. |
4678 | + * |
4679 | + * You should have received a copy of the GNU General Public License |
4680 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4681 | + * |
4682 | + */ |
4683 | + |
4684 | +import QtQuick 2.0 |
4685 | + |
4686 | +BaseModel { |
4687 | + id: personCast |
4688 | + |
4689 | + function updateJSONModel() { |
4690 | + model.clear(); |
4691 | + |
4692 | + var objectArray = JSON.parse(json).cast; |
4693 | + for ( var key in objectArray ) { |
4694 | + var jo = objectArray[key]; |
4695 | + model.append({ |
4696 | + 'id': jo.id, |
4697 | + 'title': jo.title || jo.name || "", |
4698 | + 'character': jo.character || "", |
4699 | + 'releaseDate': jo.release_date || "", |
4700 | + 'mediaType': jo.media_type, |
4701 | + 'thumb_url': thumbnail_url(jo.poster_path, "person") |
4702 | + }); |
4703 | + } |
4704 | + } |
4705 | +} |
4706 | |
4707 | === added file 'models/PersonCrew.qml' |
4708 | --- models/PersonCrew.qml 1970-01-01 00:00:00 +0000 |
4709 | +++ models/PersonCrew.qml 2014-05-14 17:33:57 +0000 |
4710 | @@ -0,0 +1,40 @@ |
4711 | +/* |
4712 | + * Flashback - Entertainment app for Ubuntu |
4713 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4714 | + * |
4715 | + * This program is free software: you can redistribute it and/or modify |
4716 | + * it under the terms of the GNU General Public License version 3 as |
4717 | + * published by the Free Software Foundation. |
4718 | + * |
4719 | + * This program is distributed in the hope that it will be useful, |
4720 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4721 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4722 | + * GNU General Public License for more details. |
4723 | + * |
4724 | + * You should have received a copy of the GNU General Public License |
4725 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4726 | + * |
4727 | + */ |
4728 | + |
4729 | +import QtQuick 2.0 |
4730 | + |
4731 | +BaseModel { |
4732 | + id: personCrew |
4733 | + function updateJSONModel() { |
4734 | + model.clear(); |
4735 | + |
4736 | + var objectArray = JSON.parse(json).crew; |
4737 | + for ( var key in objectArray ) { |
4738 | + var jo = objectArray[key]; |
4739 | + model.append({ |
4740 | + 'id': jo.id, |
4741 | + 'title': jo.title || jo.name || "", |
4742 | + 'department': jo.department || "", |
4743 | + 'job': jo.job || "", |
4744 | + 'releaseDate': jo.release_date || "", |
4745 | + 'mediaType': jo.media_type, |
4746 | + 'thumb_url': thumbnail_url(jo.poster_path, "person") |
4747 | + }); |
4748 | + } |
4749 | + } |
4750 | +} |
4751 | |
4752 | === added file 'models/SeasonEpisodes.qml' |
4753 | --- models/SeasonEpisodes.qml 1970-01-01 00:00:00 +0000 |
4754 | +++ models/SeasonEpisodes.qml 2014-05-14 17:33:57 +0000 |
4755 | @@ -0,0 +1,38 @@ |
4756 | +/* |
4757 | + * Flashback - Entertainment app for Ubuntu |
4758 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4759 | + * |
4760 | + * This program is free software: you can redistribute it and/or modify |
4761 | + * it under the terms of the GNU General Public License version 3 as |
4762 | + * published by the Free Software Foundation. |
4763 | + * |
4764 | + * This program is distributed in the hope that it will be useful, |
4765 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4766 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4767 | + * GNU General Public License for more details. |
4768 | + * |
4769 | + * You should have received a copy of the GNU General Public License |
4770 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4771 | + * |
4772 | + */ |
4773 | + |
4774 | +import QtQuick 2.0 |
4775 | + |
4776 | +BasePostModel { |
4777 | + id: episodeList |
4778 | + |
4779 | + function updateJSONModel() { |
4780 | + model.clear() |
4781 | + for ( var key in reply ) { |
4782 | + var jo = reply[key]; |
4783 | + model.append({ |
4784 | + 'episode_name': jo.title || "", |
4785 | + 'season': parseInt(jo.season), |
4786 | + 'episode': parseInt(jo.episode), |
4787 | + 'watched': jo.watched ? jo.watched.toString() : "", |
4788 | + 'thumb_url': jo.images.screen |
4789 | + }); |
4790 | + } |
4791 | + updated() |
4792 | + } |
4793 | +} |
4794 | |
4795 | === added file 'models/Show.qml' |
4796 | --- models/Show.qml 1970-01-01 00:00:00 +0000 |
4797 | +++ models/Show.qml 2014-05-14 17:33:57 +0000 |
4798 | @@ -0,0 +1,65 @@ |
4799 | +/* |
4800 | + * Flashback - Entertainment app for Ubuntu |
4801 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4802 | + * |
4803 | + * This program is free software: you can redistribute it and/or modify |
4804 | + * it under the terms of the GNU General Public License version 3 as |
4805 | + * published by the Free Software Foundation. |
4806 | + * |
4807 | + * This program is distributed in the hope that it will be useful, |
4808 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4809 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4810 | + * GNU General Public License for more details. |
4811 | + * |
4812 | + * You should have received a copy of the GNU General Public License |
4813 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4814 | + * |
4815 | + */ |
4816 | + |
4817 | +import QtQuick 2.0 |
4818 | + |
4819 | +BasePostModel { |
4820 | + id: show |
4821 | + |
4822 | + property variant attributes: { |
4823 | + 'name': '', |
4824 | + 'year': 0, |
4825 | + 'overview': '', |
4826 | + 'first_air_date': '', |
4827 | + 'air_day_utc': '', |
4828 | + 'air_time_utc': '', |
4829 | + 'episode_run_time': 0, |
4830 | + 'voteAverage': 0.0, |
4831 | + 'voteCount': 0, |
4832 | + 'userVote': 0, |
4833 | + 'in_watchlist': '', |
4834 | + 'number_of_seasons': 0, |
4835 | + 'networks': '', |
4836 | + 'genres': [], |
4837 | + 'thumb_url': '' |
4838 | + } |
4839 | + |
4840 | + function updateJSONModel() { |
4841 | + attributes = { |
4842 | + 'name': reply.title, |
4843 | + 'year': reply.year, |
4844 | + 'id': reply.tvdb_id, |
4845 | + 'imdb_id': reply.imdb_id, |
4846 | + 'overview': reply.overview, |
4847 | + 'first_air_date': reply.first_aired_utc, |
4848 | + 'air_day_utc': reply.air_day_utc, |
4849 | + 'air_time_utc': reply.air_time_utc, |
4850 | + 'episode_run_time': parseInt(reply.runtime), |
4851 | + 'voteAverage': parseFloat(reply.ratings.percentage), |
4852 | + 'voteCount': parseInt(reply.ratings.votes), |
4853 | + 'userVote': parseInt(reply.rating_advanced), |
4854 | + 'in_watchlist': reply.in_watchlist ? reply.in_watchlist.toString() : "", |
4855 | + 'in_production': reply.status, |
4856 | + 'networks': reply.network, |
4857 | + 'genres': reply.genres, |
4858 | + 'thumb_url': get_thumb(reply.images.poster, '-138'), |
4859 | + 'creditsJson': JSON.stringify(reply.people.actors || {}) |
4860 | + }; |
4861 | + updated(); |
4862 | + } |
4863 | +} |
4864 | |
4865 | === added file 'models/ShowSeasons.qml' |
4866 | --- models/ShowSeasons.qml 1970-01-01 00:00:00 +0000 |
4867 | +++ models/ShowSeasons.qml 2014-05-14 17:33:57 +0000 |
4868 | @@ -0,0 +1,37 @@ |
4869 | +/* |
4870 | + * Flashback - Entertainment app for Ubuntu |
4871 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4872 | + * |
4873 | + * This program is free software: you can redistribute it and/or modify |
4874 | + * it under the terms of the GNU General Public License version 3 as |
4875 | + * published by the Free Software Foundation. |
4876 | + * |
4877 | + * This program is distributed in the hope that it will be useful, |
4878 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4879 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4880 | + * GNU General Public License for more details. |
4881 | + * |
4882 | + * You should have received a copy of the GNU General Public License |
4883 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4884 | + * |
4885 | + */ |
4886 | + |
4887 | +import QtQuick 2.0 |
4888 | + |
4889 | +BaseModel { |
4890 | + id: seasons |
4891 | + |
4892 | + function updateJSONModel() { |
4893 | + model.clear(); |
4894 | + |
4895 | + var objectArray = JSON.parse(json); |
4896 | + for ( var key in objectArray ) { |
4897 | + var jo = objectArray[key]; |
4898 | + model.append({ |
4899 | + 'season': parseInt(jo.season), |
4900 | + 'no_of_episodes': parseInt(jo.episodes), |
4901 | + 'thumb_url': jo.images.poster |
4902 | + }); |
4903 | + } |
4904 | + } |
4905 | +} |
4906 | |
4907 | === added file 'models/Shows.qml' |
4908 | --- models/Shows.qml 1970-01-01 00:00:00 +0000 |
4909 | +++ models/Shows.qml 2014-05-14 17:33:57 +0000 |
4910 | @@ -0,0 +1,42 @@ |
4911 | +/* |
4912 | + * Flashback - Entertainment app for Ubuntu |
4913 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4914 | + * |
4915 | + * This program is free software: you can redistribute it and/or modify |
4916 | + * it under the terms of the GNU General Public License version 3 as |
4917 | + * published by the Free Software Foundation. |
4918 | + * |
4919 | + * This program is distributed in the hope that it will be useful, |
4920 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4921 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4922 | + * GNU General Public License for more details. |
4923 | + * |
4924 | + * You should have received a copy of the GNU General Public License |
4925 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4926 | + * |
4927 | + */ |
4928 | + |
4929 | +import QtQuick 2.0 |
4930 | +import "../backend/backend.js" as Backend |
4931 | + |
4932 | +BasePostModel { |
4933 | + id: shows |
4934 | + |
4935 | + source: Backend.trendingShowsUrl() |
4936 | + |
4937 | + function updateJSONModel() { |
4938 | + model.clear() |
4939 | + for ( var key in reply ) { |
4940 | + var jo = reply[key]; |
4941 | + model.append({ |
4942 | + 'name': jo.title, |
4943 | + 'year': jo.year, |
4944 | + 'id': jo.tvdb_id, |
4945 | + 'imdb_id': jo.imdb_id, |
4946 | + 'watched': jo.watched ? jo.watched.toString() : "", |
4947 | + 'watchlist': jo.in_watchlist ? jo.in_watchlist.toString() : "", |
4948 | + 'thumb_url': jo.images.poster !== "http://slurm.trakt.us/images/poster-dark.jpg" ? get_thumb(jo.images.poster, '-138') : jo.images.poster |
4949 | + }); |
4950 | + } |
4951 | + } |
4952 | +} |
4953 | |
4954 | === added file 'models/Trailer.qml' |
4955 | --- models/Trailer.qml 1970-01-01 00:00:00 +0000 |
4956 | +++ models/Trailer.qml 2014-05-14 17:33:57 +0000 |
4957 | @@ -0,0 +1,37 @@ |
4958 | +/* |
4959 | + * Flashback - Entertainment app for Ubuntu |
4960 | + * Copyright (C) 2013, 2014 Nekhelesh Ramananthan <nik90@ubuntu.com> |
4961 | + * |
4962 | + * This program is free software: you can redistribute it and/or modify |
4963 | + * it under the terms of the GNU General Public License version 3 as |
4964 | + * published by the Free Software Foundation. |
4965 | + * |
4966 | + * This program is distributed in the hope that it will be useful, |
4967 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4968 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4969 | + * GNU General Public License for more details. |
4970 | + * |
4971 | + * You should have received a copy of the GNU General Public License |
4972 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
4973 | + * |
4974 | + */ |
4975 | + |
4976 | +import QtQuick 2.0 |
4977 | + |
4978 | +BaseModel { |
4979 | + id: trailer |
4980 | + |
4981 | + function updateJSONModel() { |
4982 | + model.clear(); |
4983 | + |
4984 | + var objectArray = JSON.parse(json).youtube; |
4985 | + for ( var key in objectArray ) { |
4986 | + var jo = objectArray[key]; |
4987 | + model.append({ |
4988 | + 'name': jo.name, |
4989 | + 'type': jo.type, |
4990 | + 'url': jo.source |
4991 | + }); |
4992 | + } |
4993 | + } |
4994 | +} |
4995 | |
4996 | === added file 'models/TraktAccount.qml' |
4997 | --- models/TraktAccount.qml 1970-01-01 00:00:00 +0000 |
4998 | +++ models/TraktAccount.qml 2014-05-14 17:33:57 +0000 |
4999 | @@ -0,0 +1,28 @@ |
5000 | +/* |
The diff has been truncated for viewing.