Merge lp:~roman2861/zmusic/online-accounts into lp:zmusic

Proposed by Roman Zonov
Status: Merged
Merge reported by: Roman Zonov
Merged at revision: not available
Proposed branch: lp:~roman2861/zmusic/online-accounts
Merge into: lp:zmusic
Diff against target: 2747 lines (+2559/-0) (has conflicts)
26 files modified
.excludes (+5/-0)
About.qml (+24/-0)
Collection.qml (+31/-0)
Functions.js (+303/-0)
MyTracks.qml (+65/-0)
Popular.qml (+50/-0)
Search.qml (+112/-0)
Settings.qml (+15/-0)
TracksT.qml (+47/-0)
Tutorial.qml (+314/-0)
URLQuery.js (+59/-0)
components/AwesomeIcon.qml (+102/-0)
components/Walkthough.qml (+156/-0)
locale/en.po (+141/-0)
locale/messages.pot (+139/-0)
locale/ru.po (+143/-0)
manifest.json (+21/-0)
plugin/com.ubuntu.developer.roman2861.zmusic_vk.provider (+27/-0)
plugin/qml/Main.qml (+33/-0)
zmusic.apparmor (+11/-0)
zmusic.application (+11/-0)
zmusic.desktop (+10/-0)
zmusic.qml (+333/-0)
zmusic.qmlproject (+59/-0)
zmusic.qmlproject.user (+342/-0)
zmusic.service (+6/-0)
Conflict adding file .excludes.  Moved existing file to .excludes.moved.
Conflict adding file About.qml.  Moved existing file to About.qml.moved.
Conflict adding file Collection.qml.  Moved existing file to Collection.qml.moved.
Conflict adding file Functions.js.  Moved existing file to Functions.js.moved.
Conflict adding file MyTracks.qml.  Moved existing file to MyTracks.qml.moved.
Conflict adding file Popular.qml.  Moved existing file to Popular.qml.moved.
Conflict adding file Search.qml.  Moved existing file to Search.qml.moved.
Conflict adding file Settings.qml.  Moved existing file to Settings.qml.moved.
Conflict adding file TracksT.qml.  Moved existing file to TracksT.qml.moved.
Conflict adding file Tutorial.qml.  Moved existing file to Tutorial.qml.moved.
Conflict adding file URLQuery.js.  Moved existing file to URLQuery.js.moved.
Conflict adding file components.  Moved existing file to components.moved.
Conflict adding file graphics.  Moved existing file to graphics.moved.
Conflict adding file locale.  Moved existing file to locale.moved.
Conflict adding file manifest.json.  Moved existing file to manifest.json.moved.
Conflict adding file zmusic.apparmor.  Moved existing file to zmusic.apparmor.moved.
Conflict adding file zmusic.desktop.  Moved existing file to zmusic.desktop.moved.
Conflict adding file zmusic.qml.  Moved existing file to zmusic.qml.moved.
Conflict adding file zmusic.qmlproject.  Moved existing file to zmusic.qmlproject.moved.
Conflict adding file zmusic.qmlproject.user.  Moved existing file to zmusic.qmlproject.user.moved.
To merge this branch: bzr merge lp:~roman2861/zmusic/online-accounts
Reviewer Review Type Date Requested Status
Roman Zonov Approve
Review via email: mp+243219@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Roman Zonov (roman2861) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file '.excludes'
2--- .excludes 1970-01-01 00:00:00 +0000
3+++ .excludes 2014-11-29 21:53:09 +0000
4@@ -0,0 +1,5 @@
5+Makefile
6+*.tmp
7+.bzr
8+.git
9+
10
11=== renamed file '.excludes' => '.excludes.moved'
12=== added file 'About.qml'
13--- About.qml 1970-01-01 00:00:00 +0000
14+++ About.qml 2014-11-29 21:53:09 +0000
15@@ -0,0 +1,24 @@
16+import QtQuick 2.0
17+import Ubuntu.Components 1.1
18+
19+Page {
20+ id: about
21+ Column {
22+ spacing: units.gu(2)
23+ anchors.centerIn: parent
24+ UbuntuShape {
25+ width: if(mainview.width > mainview.height) { mainview.height/2 } else { mainview.width/2 }
26+ height: width
27+ anchors.horizontalCenter: parent.horizontalCenter
28+ image: Image {
29+ anchors.fill: parent
30+ source: "graphics/author.jpg"
31+ }
32+ }
33+ Text {
34+ anchors.horizontalCenter: parent.horizontalCenter
35+ font.pointSize: units.gu(2)
36+ text: "Made by Zonov Roman"
37+ }
38+ }
39+}
40
41=== renamed file 'About.qml' => 'About.qml.moved'
42=== added file 'Collection.qml'
43--- Collection.qml 1970-01-01 00:00:00 +0000
44+++ Collection.qml 2014-11-29 21:53:09 +0000
45@@ -0,0 +1,31 @@
46+import QtQuick 2.0
47+
48+import QtMultimedia 5.0
49+import Ubuntu.DownloadManager 0.1
50+import "Functions.js" as Js
51+import Ubuntu.Components 1.1
52+import QtQuick.LocalStorage 2.0
53+import Qt.labs.folderlistmodel 1.0
54+
55+import Ubuntu.Components.Popups 0.1
56+import Ubuntu.Components.ListItems 0.1
57+import "URLQuery.js" as URLQuery
58+
59+Page {
60+ id: spage
61+ UbuntuListView {
62+ id: downloadedview
63+ anchors.fill: parent
64+ model: collectionmodel
65+ anchors.bottomMargin: units.gu(7)
66+ delegate: Subtitled {
67+ text: tracktitle
68+ subText: artist
69+ progression: true
70+ removable: true
71+ confirmRemoval: true
72+ onItemRemoved: Js.deletecollection(id_track);
73+ onClicked: { player.source=url; mainview.issearch=0; mainview.ispopular=0; mainview.iscollection=1; mainview.csong=ii-1; pl.start(); /*selected = !selected;*/ Js.getAtristArt(artist); track_title.text=tracktitle; track_artist.text=artist; if(mainview.sendtostatus) { Js.setBroadcast(owner,track_id); } }
74+ }
75+ }
76+}
77
78=== renamed file 'Collection.qml' => 'Collection.qml.moved'
79=== added file 'Functions.js'
80--- Functions.js 1970-01-01 00:00:00 +0000
81+++ Functions.js 2014-11-29 21:53:09 +0000
82@@ -0,0 +1,303 @@
83+.import QtQuick.LocalStorage 2.0 as Sql
84+
85+function gettoken(it) {
86+ var txt;
87+ var db = Sql.LocalStorage.openDatabaseSync("zmusicdb", "1.0", "zMusic DB", 1000000);
88+ db.transaction(
89+ function(tx) {
90+ tx.executeSql('CREATE TABLE IF NOT EXISTS at(actoken TEXT, ownerid TEXT)');
91+ //tx.executeSql('INSERT INTO at VALUES(?, ?)', [ 'hello', 'world' ]);
92+ var rs = tx.executeSql('SELECT * FROM at');
93+ var r = ""
94+ for(var i = 0; i < rs.rows.length; i++) {
95+ if(it===1) {
96+ r += rs.rows.item(i).actoken;
97+ }
98+ else {
99+ r += rs.rows.item(i).ownerid;
100+ }
101+ }
102+ if(rs.rows.length===0) { txt=0; } else { txt=r; }
103+ }
104+ )
105+ //console.log(txt);
106+ return txt;
107+}
108+function insertactoken(atval,ownerid) {
109+ var db = Sql.LocalStorage.openDatabaseSync("zmusicdb", "1.0", "zMusic DB", 1000000);
110+ db.transaction(
111+ function(tx) {
112+ tx.executeSql('DELETE FROM at WHERE 1');
113+ tx.executeSql('INSERT INTO at VALUES(?,?)', [ atval,ownerid ]);
114+ }
115+ )
116+}
117+function getdownloaded() {
118+ var txt;
119+ var db = Sql.LocalStorage.openDatabaseSync("zmusicdb", "1.0", "zMusic DB", 1000000);
120+ db.transaction(
121+ function(tx) {
122+ tx.executeSql('CREATE TABLE IF NOT EXISTS downloaded(link TEXT, name TEXT, artist TEXT, timestamp INT)');
123+ //tx.executeSql('INSERT INTO at VALUES(?, ?)', [ 'hello', 'world' ]);
124+ var rs = tx.executeSql('SELECT * FROM downloaded ORDER BY timestamp DESC');
125+ var r = ""
126+ downloadedmodel.clear();
127+ for(var i = 0; i < rs.rows.length; i++) {
128+ downloadedmodel.append({url: rs.rows.item(i).link, tracktitle: rs.rows.item(i).name, artist: rs.rows.item(i).artist});
129+ }
130+ }
131+ )
132+}
133+function insertdownload(link,name,artist) {
134+ var db = Sql.LocalStorage.openDatabaseSync("zmusicdb", "1.0", "zMusic DB", 1000000);
135+ db.transaction(
136+ function(tx) {
137+ tx.executeSql('INSERT INTO downloaded VALUES(?,?,?,?)', [ link,name,artist,Date.now() ]);
138+ getdownloaded();
139+ }
140+ )
141+}
142+function deletedownload(link) {
143+ var db = Sql.LocalStorage.openDatabaseSync("zmusicdb", "1.0", "zMusic DB", 1000000);
144+ db.transaction(
145+ function(tx) {
146+ tx.executeSql('DELETE FROM downloaded WHERE link=?', [ link ]);
147+ getdownloaded();
148+ }
149+ )
150+}
151+function getcollection() {
152+ var txt;
153+ var db = Sql.LocalStorage.openDatabaseSync("zmusicdb", "1.0", "zMusic DB", 1000000);
154+ db.transaction(
155+ function(tx) {
156+ tx.executeSql('CREATE TABLE IF NOT EXISTS collection(id TEXT, name TEXT, artist TEXT, owner TEXT, timestamp INT)');
157+ //tx.executeSql('INSERT INTO at VALUES(?, ?)', [ 'hello', 'world' ]);
158+ var rs = tx.executeSql('SELECT * FROM collection ORDER BY timestamp DESC');
159+ var r = "";
160+ collectionmodel.clear();
161+ for(var i = 0; i < rs.rows.length; i++) {
162+ getTrack(rs.rows.item(i).owner,rs.rows.item(i).id,rs.rows.item(i).artist,rs.rows.item(i).name,i);
163+ }
164+ }
165+ )
166+}
167+function insertcollection(link,name,artist,owner) {
168+ var db = Sql.LocalStorage.openDatabaseSync("zmusicdb", "1.0", "zMusic DB", 1000000);
169+ db.transaction(
170+ function(tx) {
171+ tx.executeSql('INSERT INTO collection VALUES(?,?,?,?,?)', [ link,name,artist,owner,Date.now() ]);
172+ getcollection();
173+ }
174+ )
175+}
176+function deletecollection(link) {
177+ var db = Sql.LocalStorage.openDatabaseSync("zmusicdb", "1.0", "zMusic DB", 1000000);
178+ db.transaction(
179+ function(tx) {
180+ tx.executeSql('DELETE FROM collection WHERE id=?', [ link ]);
181+ }
182+ )
183+}
184+function success(token, user_id) {
185+ mainview.at = token;
186+ mainview.owner_id=user_id;
187+ playeropen.start();
188+ act_ind_main.running=true;
189+ getcollection();
190+ getTracks();
191+ popularTracks();
192+}
193+function getAtristArt(query) {
194+ var request = new XMLHttpRequest()
195+ request.open('POST', 'http://ws.audioscrobbler.com/2.0')
196+ request.onreadystatechange = function() {
197+ if (request.readyState === XMLHttpRequest.DONE) {
198+ if (request.status && request.status === 200) {
199+ var result = JSON.parse(request.responseText);
200+ var pr = result.results.artistmatches.artist.image[4];
201+ albumbg.source=pr['#text'];
202+ console.log(request.responseText);
203+ return;
204+ } else {
205+ console.log("HTTP:", request.status, request.statusText)
206+ }
207+ }
208+ }
209+ request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
210+ request.send('method=artist.search&format=json&api_key=ee799b9ba0839ad080b9a935e1039a07&artist='+query+'&limit=1');
211+}
212+function popularTracks() {
213+ var request = new XMLHttpRequest()
214+ console.log(mainview.at)
215+ request.open('POST', 'https://api.vk.com/method/audio.getPopular')
216+ request.onreadystatechange = function() {
217+ if (request.readyState === XMLHttpRequest.DONE) {
218+ if (request.status && request.status === 200) {
219+ var result = JSON.parse(request.responseText)
220+ if(mainview.slt>0) {
221+ popularmodel.remove(searchmodel.count-1);
222+ }
223+ for (var i = 0; i < result.response.length; i++) {
224+ popularmodel.append({isnn: 0, owner: result.response[i].owner_id, id_track: result.response[i].id, tracktitle: result.response[i].title, ii: i, artist: result.response[i].artist, url: result.response[i].url})
225+ }
226+ act_ind_main.running=false;
227+ logined = 1;
228+ } else {
229+ console.log("HTTP:", request.status, request.statusText)
230+ }
231+ }
232+ }
233+ request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
234+ request.send('only_eng=1&offset='+mainview.slt+'&count=50&v=5.2&access_token='+mainview.at+'');
235+}
236+function searchTracks(search) {
237+ var request = new XMLHttpRequest()
238+ console.log(mainview.at)
239+ request.open('POST', 'https://api.vk.com/method/audio.search')
240+ request.onreadystatechange = function() {
241+ if (request.readyState === XMLHttpRequest.DONE) {
242+ if (request.status && request.status === 200) {
243+ var result = JSON.parse(request.responseText)
244+ if(mainview.sslt>0) {
245+ searchmodel.remove(mainview.sslt);
246+ }
247+ for (var i = 0; i < result.response.items.length; i++) {
248+ searchmodel.append({isnnn: 0, owner: result.response.items[i].owner_id, id_track: result.response.items[i].id, tracktitle: result.response.items[i].title, ii: i, artist: result.response.items[i].artist, url: result.response.items[i].url});
249+ }
250+ mainview.sslt=mainview.sslt+50;
251+ if(result.response.count > mainview.sslt) {
252+ searchmodel.append({isnnn: 1})
253+ }
254+ act_ind_main.running=false;
255+ logined = 1;
256+ } else {
257+ console.log("HTTP:", request.status, request.statusText)
258+ }
259+ }
260+ }
261+ request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
262+ request.send('q='+search+'&offset=0&auto_complete=1&count=50&v=5.2&access_token='+mainview.at+'');
263+}
264+function getTrack(owner,id,artist,tracktitle,i) {
265+ var request = new XMLHttpRequest()
266+ request.open('POST', 'https://api.vk.com/method/audio.getById')
267+ request.onreadystatechange = function() {
268+ if (request.readyState === XMLHttpRequest.DONE) {
269+ if (request.status && request.status === 200) {
270+ var result = JSON.parse(request.responseText);
271+ console.log(request.responseText);
272+ var res = result.response[0].url;
273+ collectionmodel.append({ii: i, id_track: id, owner: owner, tracktitle: tracktitle, artist: artist, url: res});
274+ } else {
275+ console.log("HTTP:", request.status, request.statusText)
276+ }
277+ }
278+ }
279+ request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
280+ request.send('audios='+owner+'_'+id+'&v=5.2&access_token='+mainview.at+'');
281+}
282+function setBroadcast(owner,id) {
283+ console.log(owner+'_'+id);
284+ var request = new XMLHttpRequest()
285+ request.open('POST', 'https://api.vk.com/method/audio.setBroadcast')
286+ request.onreadystatechange = function() {
287+ if (request.readyState === XMLHttpRequest.DONE) {
288+ if (request.status && request.status === 200) {
289+ var result = JSON.parse(request.responseText);
290+ console.log(request.responseText);
291+ } else {
292+ console.log("HTTP:", request.status, request.statusText)
293+ }
294+ }
295+ }
296+ request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
297+ request.send('audio='+owner+'_'+id+'&v=5.2&access_token='+mainview.at+'');
298+}
299+function getTracks() {
300+ var request = new XMLHttpRequest()
301+ //console.log(mainview.at)
302+ request.open('POST', 'https://api.vk.com/method/audio.get')
303+ request.onreadystatechange = function() {
304+ if (request.readyState === XMLHttpRequest.DONE) {
305+ if (request.status && request.status === 200) {
306+ var result = JSON.parse(request.responseText);
307+ if(mainview.lt>0) {
308+ musicmodel.remove(mainview.lt);
309+ }
310+ for (var i = 0; i < result.response.items.length; i++) {
311+ musicmodel.append({isn: 0, id_track: result.response.items[i].id, owner: result.response.items[i].owner_id, tracktitle: result.response.items[i].title, ii: i, artist: result.response.items[i].artist, url: result.response.items[i].url});
312+ }
313+ mainview.lt=mainview.lt+50;
314+ if(result.response.count > mainview.lt) {
315+ musicmodel.append({isn: 1})
316+ }
317+ act_ind_main.running=false;
318+ logined = 1;
319+ } else {
320+ console.log("HTTP:", request.status, request.statusText)
321+ }
322+ }
323+ }
324+ request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
325+ request.send('need_user=0&offset='+mainview.lt+'&count=50&v=5.2&access_token='+mainview.at+'');
326+}
327+function deleteTrack(audid) {
328+ var request = new XMLHttpRequest()
329+ request.open('POST', 'https://api.vk.com/method/audio.delete')
330+ request.onreadystatechange = function() {
331+ if (request.readyState === XMLHttpRequest.DONE) {
332+ if (request.status && request.status === 200) {
333+ console.log('audio_id='+audid+'&owner_id='+mainview.owner_id+'&v=5.2&access_token='+mainview.at);
334+ var result = JSON.parse(request.responseText)
335+ } else {
336+ console.log("HTTP:", request.status, request.statusText)
337+ }
338+ }
339+ }
340+ request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
341+ request.send('audio_id='+audid+'&owner_id='+mainview.owner_id+'&v=5.2&access_token='+mainview.at+'');
342+}
343+function addTrack(audid,owner) {
344+ var request = new XMLHttpRequest()
345+ request.open('POST', 'https://api.vk.com/method/audio.add')
346+ request.onreadystatechange = function() {
347+ if (request.readyState === XMLHttpRequest.DONE) {
348+ if (request.status && request.status === 200) {
349+ console.log('audio_id='+audid+'&owner_id='+owner+'&v=5.2&access_token='+mainview.at);
350+ var result = JSON.parse(request.responseText);
351+ mainview.lt=0;
352+ musicmodel.clear();
353+ getTracks();
354+ } else {
355+ console.log("HTTP:", request.status, request.statusText);
356+ }
357+ }
358+ }
359+ request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
360+ request.send('audio_id='+audid+'&owner_id='+owner+'&v=5.2&access_token='+mainview.at+'');
361+}
362+function nextSong() {
363+ playingstate.visible=false; player.source=musicmodel.get(mainview.csong+1).url; player.play(); /*selected = !selected;*/ getAtristArt(musicmodel.get(mainview.csong+1).artist); track_title.text=musicmodel.get(mainview.csong+1).tracktitle; track_artist.text=musicmodel.get(mainview.csong+1).artist; csong=mainview.csong+1;
364+}
365+function lastSong() {
366+ playingstate.visible=false; player.source=musicmodel.get(mainview.csong-1).url; player.play(); /*selected = !selected;*/ getAtristArt(musicmodel.get(mainview.csong-1).artist); track_title.text=musicmodel.get(mainview.csong-1).tracktitle; track_artist.text=musicmodel.get(mainview.csong-1).artist; csong=mainview.csong-1;
367+}
368+function nextSongS() {
369+ playingstate.visible=false; player.source=searchmodel.get(mainview.csong+1).url; player.play(); /*selected = !selected;*/ getAtristArt(searchmodel.get(mainview.csong+1).artist); track_title.text=searchmodel.get(mainview.csong+1).tracktitle; track_artist.text=searchmodel.get(mainview.csong+1).artist; csong=mainview.csong+1;
370+}
371+function lastSongS() {
372+ playingstate.visible=false; player.source=searchmodel.get(mainview.csong-1).url; player.play(); /*selected = !selected;*/ getAtristArt(searchmodel.get(mainview.csong-1).artist); track_title.text=searchmodel.get(mainview.csong-1).tracktitle; track_artist.text=searchmodel.get(mainview.csong-1).artist; csong=mainview.csong-1;
373+}
374+function nextSongP() {
375+ playingstate.visible=false; player.source=popularmodel.get(mainview.csong+1).url; player.play(); /*selected = !selected;*/ getAtristArt(popularmodel.get(mainview.csong+1).artist); track_title.text=popularmodel.get(mainview.csong+1).tracktitle; track_artist.text=popularmodel.get(mainview.csong+1).artist; csong=mainview.csong+1;
376+}
377+function lastSongP() {
378+ playingstate.visible=false; player.source=popularmodel.get(mainview.csong-1).url; player.play(); /*selected = !selected;*/ getAtristArt(popularmodel.get(mainview.csong-1).artist); track_title.text=popularmodel.get(mainview.csong-1).tracktitle; track_artist.text=popularmodel.get(mainview.csong-1).artist; csong=mainview.csong-1;
379+}
380+function nextSongC() {
381+ playingstate.visible=false; player.source=collectionmodel.get(mainview.csong+1).url; player.play(); /*selected = !selected;*/ getAtristArt(collectionmodel.get(mainview.csong+1).artist); track_title.text=collectionmodel.get(mainview.csong+1).tracktitle; track_artist.text=collectionmodel.get(mainview.csong+1).artist; csong=mainview.csong+1;
382+}
383+function lastSongC() {
384+ playingstate.visible=false; player.source=collectionmodel.get(mainview.csong-1).url; player.play(); /*selected = !selected;*/ getAtristArt(collectionmodel.get(mainview.csong-1).artist); track_title.text=collectionmodel.get(mainview.csong-1).tracktitle; track_artist.text=collectionmodel.get(mainview.csong-1).artist; csong=mainview.csong-1;
385+}
386
387=== renamed file 'Functions.js' => 'Functions.js.moved'
388=== added file 'MyTracks.qml'
389--- MyTracks.qml 1970-01-01 00:00:00 +0000
390+++ MyTracks.qml 2014-11-29 21:53:09 +0000
391@@ -0,0 +1,65 @@
392+import QtQuick 2.0
393+import QtMultimedia 5.0
394+import "Functions.js" as Js
395+import Ubuntu.Components 1.1
396+import QtQuick.LocalStorage 2.0
397+import Ubuntu.Components.Popups 0.1
398+import Ubuntu.Components.ListItems 0.1
399+import "URLQuery.js" as URLQuery
400+
401+Page {
402+ id: mtpage
403+
404+ UbuntuListView {
405+ id: musicview
406+ anchors.fill: parent
407+ model: musicmodel
408+ anchors.bottomMargin: units.gu(7)
409+ delegate: Subtitled {
410+ text: if(isn==1) { "" } else { tracktitle }
411+ subText: if(isn==1) { "" } else { artist }
412+ progression: if(isn==0) { true } else { false }
413+ removable: true
414+ confirmRemoval: true
415+ onPressAndHold: { PopupUtils.open(aystd); }
416+ onItemRemoved: { Js.deleteTrack(id_track); }
417+ onClicked: { player.source=url; csong=ii; mainview.ispopular=0; mainview.issearch=0; mainview.iscollection=0; Js.getAtristArt(artist); track_title.text=tracktitle; track_artist.text=artist; pl.start(); if(mainview.sendtostatus===true) { Js.setBroadcast(owner,id_track); } }
418+ Component {
419+ id: aystd
420+ Dialog {
421+ id: aystdue
422+ title: i18n.tr("Actions")
423+ text: i18n.tr("What do you want to do?")
424+ Row {
425+ spacing: units.gu(1)
426+
427+ Button {
428+ text: i18n.tr("To my best")
429+ color: "green"
430+ onClicked: { Js.insertcollection(id_track,tracktitle,artist,owner); PopupUtils.close(aystdue) }
431+ width: (parent.width)/2
432+ }
433+ Button {
434+ text: i18n.tr("Cancel")
435+ onClicked: { PopupUtils.close(aystdue) }
436+ width: (parent.width)/2
437+ }
438+ }
439+ }
440+ }
441+ Button {
442+ id: buttnext
443+ visible: if(isn==1) { true } else { false }
444+ width: mainview.width/1.5
445+ anchors.centerIn: parent
446+ text: "Next"
447+ onClicked: { ntact.running=true; Js.getTracks(); this.visible=false; }
448+ }
449+ ActivityIndicator {
450+ id: ntact
451+ running: false
452+ anchors.centerIn: buttnext
453+ }
454+ }
455+ }
456+}
457
458=== renamed file 'MyTracks.qml' => 'MyTracks.qml.moved'
459=== added file 'Popular.qml'
460--- Popular.qml 1970-01-01 00:00:00 +0000
461+++ Popular.qml 2014-11-29 21:53:09 +0000
462@@ -0,0 +1,50 @@
463+import QtQuick 2.0
464+
465+import QtMultimedia 5.0
466+import "Functions.js" as Js
467+import Ubuntu.Components 1.1
468+import QtQuick.LocalStorage 2.0
469+import Ubuntu.Components.Popups 0.1
470+import Ubuntu.Components.ListItems 0.1
471+import "URLQuery.js" as URLQuery
472+
473+Page {
474+ id: spage
475+
476+ UbuntuListView {
477+ id: popularview
478+ anchors.fill: parent
479+ model: popularmodel
480+ anchors.bottomMargin: units.gu(7)
481+ delegate: Subtitled {
482+ text: tracktitle
483+ subText: artist
484+ progression: true
485+ onPressAndHold: { PopupUtils.open(aystd); }
486+ onClicked: { player.source=url; mainview.issearch=0; mainview.iscollection=0; mainview.ispopular=1; csong=ii; pl.start(); /*selected = !selected;*/ Js.getAtristArt(artist); track_title.text=tracktitle; track_artist.text=artist; if(mainview.sendtostatus) { Js.setBroadcast(owner,id_track); } }
487+ Component {
488+ id: aystd
489+ Dialog {
490+ id: aystdue
491+ title: i18n.tr("Actions")
492+ text: i18n.tr("What do you want to do?")
493+ Row {
494+ spacing: units.gu(1)
495+ Button {
496+ text: i18n.tr("To VK")
497+ color: "green"
498+ onClicked: { Js.addTrack(id_track,owner); PopupUtils.close(aystdue); }
499+ width: (parent.width)/2
500+ }
501+ Button {
502+ text: i18n.tr("To your best")
503+ color: "blue"
504+ onClicked: { Js.insertcollection(id_track,tracktitle,artist,owner); PopupUtils.close(aystdue) }
505+ width: (parent.width)/2
506+ }
507+ }
508+ }
509+ }
510+ }
511+ }
512+}
513
514=== renamed file 'Popular.qml' => 'Popular.qml.moved'
515=== added file 'Search.qml'
516--- Search.qml 1970-01-01 00:00:00 +0000
517+++ Search.qml 2014-11-29 21:53:09 +0000
518@@ -0,0 +1,112 @@
519+import QtQuick 2.0
520+import Ubuntu.DownloadManager 0.1
521+import QtMultimedia 5.0
522+import "Functions.js" as Js
523+import Ubuntu.Components 1.1
524+import QtQuick.LocalStorage 2.0
525+import Ubuntu.Components.Popups 0.1
526+import Ubuntu.Components.ListItems 0.1
527+import "URLQuery.js" as URLQuery
528+
529+Page {
530+ id: spage
531+ Rectangle {
532+ id: addBar
533+
534+ property bool expanded: visible
535+
536+ color: Qt.rgba(0.2,0.2,0.2,0.2)
537+
538+ property alias text: filterField.text
539+
540+ anchors {
541+ left: parent.left
542+ right: parent.right
543+ top: parent.top
544+ }
545+
546+ height: expanded ? filterField.height + addBarDivider.height + units.gu(2) : 0
547+ clip: true
548+ TextField {
549+ id: filterField
550+ anchors {
551+ left: parent.left
552+ right: parent.right
553+ bottom: addBarDivider.bottom
554+ margins: units.gu(1)
555+ }
556+ onAccepted: { sslt=0; searchmodel.clear(); Js.searchTracks(filterField.text) }
557+ placeholderText: i18n.tr("Search...")
558+ onFocusChanged: {
559+ if(focus==true) {
560+ //PopupUtils.open(popoverComponent, filterField)
561+ }
562+ }
563+ }
564+
565+ ThinDivider {
566+ id: addBarDivider
567+
568+ //rotation: 180
569+
570+ anchors {
571+ left: parent.left
572+ right: parent.right
573+ bottom: parent.bottom
574+ }
575+ }
576+ }
577+ UbuntuListView {
578+ id: searchview
579+ model: searchmodel
580+ width: mainview.width
581+ height: spage.height
582+ anchors.top: addBar.bottom
583+ anchors.bottom: parent.bottom
584+ anchors.bottomMargin: units.gu(7)
585+ clip: true
586+ delegate: Subtitled {
587+ text: if(isnnn==1) { "" } else { tracktitle }
588+ subText: if(isnnn==1) { "" } else { artist }
589+ progression: if(isnnn==0) { true } else { false }
590+ onPressAndHold: PopupUtils.open(aystd);
591+ onClicked: { player.source=url; mainview.ispopular=0; mainview.iscollection=0; mainview.issearch=1; csong=ii; pl.start(); Js.getAtristArt(artist); track_title.text=tracktitle; track_artist.text=artist; if(mainview.sendtostatus) { Js.setBroadcast(owner,track_id); } }
592+ Component {
593+ id: aystd
594+ Dialog {
595+ id: aystdue
596+ title: i18n.tr("Actions")
597+ text: i18n.tr("What do you want to do?")
598+ Row {
599+ spacing: units.gu(1)
600+ Button {
601+ text: i18n.tr("To VK")
602+ color: "green"
603+ onClicked: { Js.addTrack(id_track,owner); PopupUtils.close(aystdue); }
604+ width: (parent.width)/2
605+ }
606+ Button {
607+ text: i18n.tr("To your best")
608+ color: "blue"
609+ onClicked: { Js.insertcollection(id_track,tracktitle,artist,owner); PopupUtils.close(aystdue) }
610+ width: (parent.width)/2
611+ }
612+ }
613+ }
614+ }
615+ Button {
616+ id: nextsbutt
617+ visible: if(isnnn==1) { true } else { false }
618+ width: mainview.width/1.5
619+ anchors.centerIn: parent
620+ text: "Next"
621+ onClicked: { ntacts.running=true; Js.searchTracks(filterField.text); this.visible=false; }
622+ }
623+ ActivityIndicator {
624+ id: ntacts
625+ running: false
626+ anchors.centerIn: nextsbutt
627+ }
628+ }
629+ }
630+}
631
632=== renamed file 'Search.qml' => 'Search.qml.moved'
633=== added file 'Settings.qml'
634--- Settings.qml 1970-01-01 00:00:00 +0000
635+++ Settings.qml 2014-11-29 21:53:09 +0000
636@@ -0,0 +1,15 @@
637+import QtQuick 2.0
638+import Ubuntu.Components 1.1
639+import Ubuntu.Components.ListItems 0.1
640+
641+
642+Page {
643+ id: settings
644+ Standard {
645+ text: i18n.tr("Show current song in status")
646+ control: CheckBox {
647+ checked: mainview.sendtostatus
648+ onCheckedChanged: { mainview.sendtostatus = checked; }
649+ }
650+ }
651+}
652
653=== renamed file 'Settings.qml' => 'Settings.qml.moved'
654=== added file 'TracksT.qml'
655--- TracksT.qml 1970-01-01 00:00:00 +0000
656+++ TracksT.qml 2014-11-29 21:53:09 +0000
657@@ -0,0 +1,47 @@
658+import QtQuick 2.0
659+import QtMultimedia 5.0
660+import "Functions.js" as Js
661+import Ubuntu.Components 1.1
662+import QtQuick.LocalStorage 2.0
663+import Ubuntu.Components.Popups 0.1
664+import Ubuntu.Components.ListItems 0.1
665+import "URLQuery.js" as URLQuery
666+
667+Tabs {
668+ id: tabs
669+ Tab {
670+ id: mytracks
671+ title: i18n.tr("My tracks")
672+ MyTracks {
673+
674+ }
675+ }
676+ Tab {
677+ id: popular
678+ title: i18n.tr("Popular")
679+ Popular {
680+
681+ }
682+ }
683+ Tab {
684+ id: search
685+ title: i18n.tr("Search")
686+ Search {
687+
688+ }
689+ }
690+ Tab {
691+ id: about
692+ title: i18n.tr("Your best")
693+ Collection {
694+
695+ }
696+ }
697+ Tab {
698+ id: settings
699+ title: i18n.tr("Settings")
700+ Settings {
701+
702+ }
703+ }
704+}
705
706=== renamed file 'TracksT.qml' => 'TracksT.qml.moved'
707=== added file 'Tutorial.qml'
708--- Tutorial.qml 1970-01-01 00:00:00 +0000
709+++ Tutorial.qml 2014-11-29 21:53:09 +0000
710@@ -0,0 +1,314 @@
711+import QtQuick 2.0
712+import "Functions.js" as Js
713+import Ubuntu.Components 1.1
714+import "URLQuery.js" as URLQuery
715+import Ubuntu.Components.Popups 0.1
716+import Ubuntu.Web 0.2
717+import Ubuntu.OnlineAccounts 0.1
718+import Ubuntu.OnlineAccounts.Client 0.1
719+import Ubuntu.Components.ListItems 0.1 as ListItem
720+import "components"
721+
722+Walkthough {
723+ id: walkthrough
724+ appName: "zMusic"
725+
726+ // Needs custom property to show up in autopilot tests
727+ property bool test: true
728+
729+ model: [
730+ Component {
731+ Item {
732+ Column {
733+ id: welcomeColumn
734+ anchors {
735+ centerIn: parent
736+ margins: units.gu(2)
737+ }
738+
739+ Label {
740+ anchors.horizontalCenter: parent.horizontalCenter
741+ fontSize: "large"
742+ text: i18n.tr("Welcome to")
743+ }
744+
745+ Label {
746+ fontSize: "x-large"
747+ font.bold: true
748+ anchors.horizontalCenter: parent.horizontalCenter
749+ text: i18n.tr("zMusic")
750+ }
751+ }
752+
753+ ActivityIndicator {
754+ id: tutact
755+ running: true
756+ anchors {
757+ bottom: parent.bottom
758+ horizontalCenter: parent.horizontalCenter
759+ }
760+ }
761+ Label {
762+ id: presstostart
763+ opacity: 0
764+ anchors {
765+ bottom: parent.bottom
766+ horizontalCenter: parent.horizontalCenter
767+ }
768+ text: "Press anywhere to start!"
769+ }
770+
771+ ParallelAnimation {
772+ running: ptsb
773+ NumberAnimation { target: tutact; property: "opacity"; to: 0; }
774+ NumberAnimation { target: presstostart; property: "opacity"; to: 1; }
775+ }
776+
777+ Label {
778+ id: swleft
779+ opacity: 0
780+ anchors {
781+ bottom: parent.bottom
782+ bottomMargin: units.gu(2)
783+ horizontalCenter: parent.horizontalCenter
784+ }
785+ color: "black"
786+ text: i18n.tr("Swipe left to continue")
787+ }
788+ Image {
789+ anchors {
790+ centerIn: parent
791+ }
792+ fillMode: Image.PreserveAspectFit
793+ width: mainview.width>mainview.height ? mainview.width/2.5 : mainview.width/1.5
794+ height: width
795+ source: Qt.resolvedUrl("graphics/logovk.png")
796+ ParallelAnimation {
797+ running: iwvl
798+ NumberAnimation { targets: [swleft]; property: "opacity"; to: 1; duration: 500 }
799+ NumberAnimation { target: tutact; property: "opacity"; to: 0; duration: 500; }
800+ }
801+ }
802+
803+ }
804+ },
805+
806+ Component {
807+ Item {
808+ Label {
809+ id: headerLabel
810+ anchors.horizontalCenter: parent.horizontalCenter
811+ fontSize: "x-large"
812+ text: i18n.tr("What is VK?")
813+ anchors.top: parent.top
814+ anchors.topMargin: units.gu(2)
815+ color: "black"
816+ }
817+
818+ Label {
819+ id: contentsLabel
820+ anchors {
821+ top: headerLabel.bottom
822+ margins: units.gu(2)
823+ }
824+
825+ width: parent.width
826+ font.pixelSize: units.dp(17)
827+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
828+ horizontalAlignment: Text.AlignHCenter
829+ color: "black"
830+ text: i18n.tr("VK is the largest European social network with more than a 100 million active users.")
831+ }
832+
833+ Image {
834+ id: dog1
835+ fillMode: Image.PreserveAspectFit
836+ width: parent.width
837+ source: Qt.resolvedUrl("graphics/dog.png")
838+ smooth: true
839+ antialiasing: true
840+ opacity: 0
841+ anchors {
842+ top: contentsLabel.bottom
843+ bottom: parent.bottom
844+ topMargin: units.gu(2)
845+ }
846+ }
847+ NumberAnimation { target: dog1; property: "opacity"; from: dog1.opacity; to: 1; duration: 1000; running: ci===1; }
848+ }
849+ },
850+ Component {
851+ Item {
852+ /*Rectangle {
853+ id: loadingw
854+ anchors.centerIn: parent
855+ width: column.width + units.gu(4)
856+ height: column.height + units.gu(4)
857+ color: "transparent"
858+
859+ Behavior on opacity {
860+ UbuntuNumberAnimation {
861+ duration: UbuntuAnimation.SlowDuration
862+ }
863+ }
864+
865+ Column {
866+ id: column
867+ anchors.centerIn: parent
868+ spacing: units.gu(1)
869+
870+ Label {
871+ anchors.horizontalCenter: parent.horizontalCenter
872+ fontSize: "large"
873+ text: i18n.tr("Loading web page...")
874+ color: "black"
875+ }
876+
877+ ProgressBar {
878+ anchors.horizontalCenter: parent.horizontalCenter
879+
880+ width: units.gu(30)
881+ maximumValue: 100
882+ minimumValue: 0
883+ value: autww.loadProgress
884+ }
885+ }
886+ }*/
887+
888+ Column {
889+ id: waitpl
890+ anchors.centerIn: parent
891+ spacing: units.gu(2)
892+ Label {
893+ text: "Wait, please"
894+ }
895+ ActivityIndicator {
896+ running: true
897+ anchors.horizontalCenter: parent.horizontalCenter
898+ }
899+ }
900+
901+ ListView {
902+ id: accountsList
903+ spacing: units.gu(1)
904+ z: 1000
905+ anchors.fill: parent
906+ model: accounts
907+ delegate: Rectangle {
908+ id: wrapper
909+ width: accountsList.width
910+ height: units.gu(10)
911+ color: "transparent"
912+ Component.onCompleted: {
913+ console.log(accts.provider.id);
914+ var params = {};
915+
916+ }
917+ Button {
918+ anchors.fill: parent
919+ anchors.margins: units.gu(2)
920+
921+ text: i18n.tr("Authenticate %1").arg(displayName)
922+
923+ onClicked: {
924+ var params = {}
925+ accts.authenticate(params)
926+ }
927+ }
928+ AccountService {
929+ id: accts
930+ objectHandle: accountServiceHandle
931+ onAuthenticated: {
932+ moar.visible=false;
933+ Js.success(reply.AccessToken, 2410788);
934+ walkthrough.visible=false;
935+ }
936+ }
937+ }
938+ }
939+
940+ /*WebView {
941+ id: autww
942+ anchors.fill: parent
943+ scale: 1
944+ url: "https://oauth.vk.com/authorize?client_id=3609494&scope=audio,status&redirect_uri=https://oauth.vk.com/blank.html&display=touch&v=5.2&response_type=token";
945+ onLoadingChanged: {
946+ console.log(url);
947+ wvisop=true;
948+ if (loading) {
949+ autww.visible=false;
950+ loadingw.visible=true;
951+ return
952+ } else if(lastLoadSucceeded) {
953+ var urll = autww.url;
954+ urll = urll.toString();
955+ var result = URLQuery.parseParams(urll);
956+ loadingw.visible=false;
957+ var resat;
958+ resat = result.access_token;
959+ if (!resat&&!result.error) {
960+ act_ind_main.running=false;
961+ tutorial.visible=true;
962+ autww.visible=true;
963+ return;
964+ }
965+ else if(result.error) {
966+ Qt.quit();
967+ }
968+ else {
969+ if(ci==2) {
970+ moar.visible=true;
971+ }
972+ oa=true;
973+ at=result.access_token;
974+ owner_id=result.user_id;
975+ Js.insertactoken(at,owner_id);
976+ }
977+ }
978+ else {
979+ return;
980+ }
981+
982+ }
983+ }*/
984+ Label {
985+ id: headerlLabel
986+ opacity: oa===true ? 1 : 0
987+ anchors.horizontalCenter: parent.horizontalCenter
988+ fontSize: "x-large"
989+ text: i18n.tr("Enjoy it!")
990+ color: "black"
991+ anchors.top: parent.top
992+ anchors.topMargin: units.gu(2)
993+ }
994+
995+ Label {
996+ id: contentslLabel
997+ anchors {
998+ top: headerlLabel.bottom
999+ margins: units.gu(2)
1000+ }
1001+ opacity: oa===true ? 1 : 0
1002+ width: parent.width
1003+ font.pixelSize: units.dp(17)
1004+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
1005+ horizontalAlignment: Text.AlignHCenter
1006+ color: "black"
1007+ text: i18n.tr("I hope, that you'll like it! Please, write your reviews about my app! I hope, that with your help we'll make bug-free, useful and beautiful application!")
1008+ }
1009+ Label {
1010+ id: openapp
1011+ opacity: oa===true ? 1 : 0
1012+ anchors {
1013+ bottom: parent.bottom
1014+ bottomMargin: units.gu(2)
1015+ horizontalCenter: parent.horizontalCenter
1016+ }
1017+ color: "black"
1018+ text: i18n.tr("Press anywhere to start using zMusic!")
1019+ z: 10000000
1020+ }
1021+ }
1022+ }
1023+ ]
1024+}
1025
1026=== renamed file 'Tutorial.qml' => 'Tutorial.qml.moved'
1027=== added file 'URLQuery.js'
1028--- URLQuery.js 1970-01-01 00:00:00 +0000
1029+++ URLQuery.js 2014-11-29 21:53:09 +0000
1030@@ -0,0 +1,59 @@
1031+/*
1032+ * Copyright (C) 2013 Nikita Krupenko
1033+ *
1034+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
1035+ * associated documentation files (the "Software"), to deal in the Software without restriction,
1036+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
1037+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
1038+ * furnished to do so, subject to the following conditions:
1039+ *
1040+ * The above copyright notice and this permission notice shall be included in all copies or
1041+ * substantial portions of the Software.
1042+ *
1043+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
1044+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1045+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
1046+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1047+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1048+ */
1049+
1050+.pragma library
1051+
1052+function serializeParams(object, prefix) {
1053+ if (typeof object !== 'object') {
1054+ return ''
1055+ }
1056+
1057+ if (!prefix) {
1058+ prefix = ''
1059+ }
1060+
1061+ var output = []
1062+ var keysArray = (Array.isArray(object) ? object : Object.keys(object))
1063+ for (var i = 0; i < keysArray.length; i++) {
1064+ var key = (Array.isArray(object) ? i : keysArray[i])
1065+ if (typeof object[key] === 'object') {
1066+ output.push(serializeParams(object[key], (!prefix ? key : '%1[%2]'.arg(prefix).arg(key))))
1067+ } else {
1068+ output.push('%1=%2'.arg(encodeURIComponent(!prefix ? key : '%1[%2]'.arg(prefix).arg(Array.isArray(object) ? '' : key)))
1069+ .arg(encodeURIComponent(object[key])))
1070+ }
1071+ }
1072+
1073+ return output.join('&').replace('%20', '+')
1074+}
1075+
1076+function parseParams(url) {
1077+ if (typeof url !== 'string') {
1078+ return null
1079+ }
1080+
1081+ var result = {}
1082+ var queries = url.replace(/[?#]/g, '&').replace(/^[^&]*?&/, '').replace(/[+]/g, '%20').split(/[&;]/)
1083+ for (var i = 0; i < queries.length; i++) {
1084+ var params = queries[i].split('=')
1085+ result[decodeURIComponent(params[0])] = decodeURIComponent(params[1])
1086+ }
1087+
1088+ return result
1089+}
1090
1091=== renamed file 'URLQuery.js' => 'URLQuery.js.moved'
1092=== added directory 'components'
1093=== renamed directory 'components' => 'components.moved'
1094=== added file 'components/AwesomeIcon.qml'
1095--- components/AwesomeIcon.qml 1970-01-01 00:00:00 +0000
1096+++ components/AwesomeIcon.qml 2014-11-29 21:53:09 +0000
1097@@ -0,0 +1,102 @@
1098+/*
1099+ * QML Air - A lightweight and mostly flat UI widget collection for QML
1100+ * Copyright (C) 2014 Michael Spencer
1101+ *
1102+ * This program is free software: you can redistribute it and/or modify
1103+ * it under the terms of the GNU General Public License as published by
1104+ * the Free Software Foundation, either version 3 of the License, or
1105+ * (at your option) any later version.
1106+ *
1107+ * This program is distributed in the hope that it will be useful,
1108+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1109+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1110+ * GNU General Public License for more details.
1111+ *
1112+ * You should have received a copy of the GNU General Public License
1113+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1114+ */
1115+import QtQuick 2.0
1116+import Ubuntu.Components 1.1
1117+
1118+Item {
1119+ id: widget
1120+ property string name
1121+
1122+ property alias color: text.color
1123+ property alias size: text.font.pixelSize
1124+
1125+ width: Math.max(text.width, text.height)
1126+ height: width
1127+
1128+ property bool shadow: false
1129+
1130+ property var icons: {
1131+ "check-circle": "",
1132+ "check-square-o": "",
1133+ "circle": "",
1134+ "exclamation-triangle": "",
1135+ "calendar": "",
1136+ "github": "",
1137+ "file": "",
1138+ "clock": "",
1139+ "bookmark-o": "",
1140+ "user": "",
1141+ "comments-o": "",
1142+ "check": "",
1143+ "ellipse-h": "",
1144+ "ellipse-v": "",
1145+ "save": "",
1146+ "smile-o": "",
1147+ "spinner": "",
1148+ "square-o": "",
1149+ "times": "",
1150+ "times-circle": "",
1151+ "plus": "",
1152+ "bell-o": "",
1153+ "bell": "",
1154+ "chevron-left": "",
1155+ "chevron-right": "",
1156+ "cog": "",
1157+ "minus": "",
1158+ "dashboard": "",
1159+ "calendar-empty": "",
1160+ "calendar": "",
1161+ "bars":"",
1162+ "inbox": "",
1163+ "list": "",
1164+ "long-list": "",
1165+ "comment": "",
1166+ "download": "",
1167+ "tasks": "",
1168+ "bug": "",
1169+ "code-fork": "",
1170+ "clock-o": "",
1171+ "pencil-square-o":"",
1172+ "check-square-o":"",
1173+ "picture-o":"",
1174+ "trash": "",
1175+ "code": "",
1176+ "users": "",
1177+ "exchange": ""
1178+ }
1179+
1180+ property alias weight: text.font.weight
1181+
1182+ FontLoader { id: fontAwesome; source: Qt.resolvedUrl("../graphics/FontAwesome.otf") }
1183+
1184+ Label {
1185+ id: text
1186+ anchors.centerIn: parent
1187+
1188+ font.family: fontAwesome.name
1189+ font.weight: Font.Light
1190+ text: widget.icons.hasOwnProperty(widget.name) ? widget.icons[widget.name] : ""
1191+ //color: widget.enabled ? styleObject.color : styleObject.color_disabled
1192+ style: shadow ? Text.Raised : Text.Normal
1193+ styleColor: Qt.rgba(0,0,0,0.9)
1194+
1195+ Behavior on color {
1196+ ColorAnimation { duration: 200 }
1197+ }
1198+ }
1199+}
1200
1201=== added file 'components/Walkthough.qml'
1202--- components/Walkthough.qml 1970-01-01 00:00:00 +0000
1203+++ components/Walkthough.qml 2014-11-29 21:53:09 +0000
1204@@ -0,0 +1,156 @@
1205+/***************************************************************************
1206+ * Whatsoever ye do in word or deed, do all in the name of the *
1207+ * Lord Jesus, giving thanks to God and the Father by him. *
1208+ * - Colossians 3:17 *
1209+ * *
1210+ * Ubuntu UI Extras - A collection of QML widgets not available *
1211+ * in the default Ubuntu UI Toolkit *
1212+ * Copyright (C) 2013 Michael Spencer <sonrisesoftware@gmail.com> *
1213+ * *
1214+ * This program is free software: you can redistribute it and/or modify *
1215+ * it under the terms of the GNU General Public License as published by *
1216+ * the Free Software Foundation, either version 2 of the License, or *
1217+ * (at your option) any later version. *
1218+ * *
1219+ * This program is distributed in the hope that it will be useful, *
1220+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
1221+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
1222+ * GNU General Public License for more details. *
1223+ * *
1224+ * You should have received a copy of the GNU General Public License *
1225+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
1226+ ***************************************************************************/
1227+import QtQuick 2.0
1228+import "../Functions.js" as Js
1229+import Ubuntu.Components 1.1
1230+import Ubuntu.Components.Popups 0.1
1231+import Ubuntu.Components.ListItems 0.1 as ListItem
1232+
1233+Page {
1234+ id: root
1235+
1236+ property list<Component> model
1237+
1238+ property string appName
1239+ property color completedPage
1240+ property color incompletePage
1241+
1242+ property bool exitable: false
1243+
1244+ signal finished
1245+
1246+ SequentialAnimation {
1247+ id: hideAnimation
1248+
1249+ UbuntuNumberAnimation {
1250+ duration: UbuntuAnimation.SlowDuration * 1/2
1251+ target: root
1252+ property: "opacity"
1253+ from: 1; to: 0;
1254+ }
1255+
1256+ ScriptAction {
1257+ script: {
1258+ pageStack.pop(root)
1259+ }
1260+ }
1261+ }
1262+
1263+ Component.onCompleted: mainview.forceActiveFocus()
1264+
1265+ Keys.onLeftPressed: {
1266+ if (list.currentIndex > 0)
1267+ list.currentIndex--
1268+ }
1269+
1270+ Keys.onRightPressed: {
1271+ if (list.currentIndex < list.count - 1)
1272+ list.currentIndex++
1273+ }
1274+
1275+ UbuntuListView {
1276+ id: listView
1277+ anchors {
1278+ left: parent.left
1279+ right: parent.right
1280+ top: parent.top
1281+ bottom: divider.top
1282+ }
1283+ model: root.model
1284+ onCurrentIndexChanged: {
1285+ ci=currentIndex;
1286+ if(accounts.count==0&&ci==2) {
1287+ setup.exec();
1288+ }
1289+ }
1290+ snapMode: ListView.SnapOneItem
1291+ orientation: Qt.Horizontal
1292+ highlightMoveDuration: UbuntuAnimation.FastDuration
1293+ highlightRangeMode: ListView.StrictlyEnforceRange
1294+ highlightFollowsCurrentItem: true
1295+
1296+ delegate: Item {
1297+ width: listView.width
1298+ height: listView.height
1299+ clip: true
1300+
1301+ Loader {
1302+ anchors {
1303+ fill: parent
1304+ }
1305+
1306+ sourceComponent: modelData
1307+ }
1308+ }
1309+ }
1310+
1311+ ListItem.ThinDivider {
1312+ id: divider
1313+ anchors.bottom: footer.top
1314+ opacity: 0
1315+ visible: iwvl
1316+ }
1317+
1318+ ParallelAnimation {
1319+ running: iwvl
1320+ NumberAnimation { targets: [divider,footer]; property: "opacity"; to: 1; duration: 500 }
1321+ }
1322+
1323+ Row {
1324+ id: footer
1325+ anchors.bottom: parent.bottom
1326+ anchors.horizontalCenter: parent.horizontalCenter
1327+ height: units.gu(6)
1328+ opacity: 0
1329+ visible: iwvl
1330+ spacing: (height - size)/2
1331+
1332+ property real size: units.gu(2)
1333+
1334+ Repeater {
1335+ model: listView.count
1336+ delegate: Rectangle {
1337+ anchors.verticalCenter: parent.verticalCenter
1338+ width: footer.size
1339+ height: width
1340+ radius: width/2
1341+
1342+ color: listView.currentIndex >= index ? "#4d7198" : "white"
1343+
1344+ Behavior on color {
1345+ ColorAnimation {
1346+ duration: UbuntuAnimation.FastDuration
1347+ }
1348+ }
1349+
1350+ MouseArea {
1351+ anchors.fill: parent
1352+
1353+ onClicked: {
1354+ listView.currentIndex = index
1355+ }
1356+ }
1357+ }
1358+ }
1359+ }
1360+}
1361
1362=== added directory 'graphics'
1363=== renamed directory 'graphics' => 'graphics.moved'
1364=== added file 'graphics/FontAwesome.otf'
1365Binary files graphics/FontAwesome.otf 1970-01-01 00:00:00 +0000 and graphics/FontAwesome.otf 2014-11-29 21:53:09 +0000 differ
1366=== added file 'graphics/author.jpg'
1367Binary files graphics/author.jpg 1970-01-01 00:00:00 +0000 and graphics/author.jpg 2014-11-29 21:53:09 +0000 differ
1368=== added file 'graphics/back.png'
1369Binary files graphics/back.png 1970-01-01 00:00:00 +0000 and graphics/back.png 2014-11-29 21:53:09 +0000 differ
1370=== added file 'graphics/dog.png'
1371Binary files graphics/dog.png 1970-01-01 00:00:00 +0000 and graphics/dog.png 2014-11-29 21:53:09 +0000 differ
1372=== added file 'graphics/dog2.png'
1373Binary files graphics/dog2.png 1970-01-01 00:00:00 +0000 and graphics/dog2.png 2014-11-29 21:53:09 +0000 differ
1374=== added file 'graphics/forward.png'
1375Binary files graphics/forward.png 1970-01-01 00:00:00 +0000 and graphics/forward.png 2014-11-29 21:53:09 +0000 differ
1376=== added file 'graphics/logo.jpg'
1377Binary files graphics/logo.jpg 1970-01-01 00:00:00 +0000 and graphics/logo.jpg 2014-11-29 21:53:09 +0000 differ
1378=== added file 'graphics/logo.png'
1379Binary files graphics/logo.png 1970-01-01 00:00:00 +0000 and graphics/logo.png 2014-11-29 21:53:09 +0000 differ
1380=== added file 'graphics/logo2.png'
1381Binary files graphics/logo2.png 1970-01-01 00:00:00 +0000 and graphics/logo2.png 2014-11-29 21:53:09 +0000 differ
1382=== added file 'graphics/logo4.jpg'
1383Binary files graphics/logo4.jpg 1970-01-01 00:00:00 +0000 and graphics/logo4.jpg 2014-11-29 21:53:09 +0000 differ
1384=== added file 'graphics/logovk.png'
1385Binary files graphics/logovk.png 1970-01-01 00:00:00 +0000 and graphics/logovk.png 2014-11-29 21:53:09 +0000 differ
1386=== added file 'graphics/pause.png'
1387Binary files graphics/pause.png 1970-01-01 00:00:00 +0000 and graphics/pause.png 2014-11-29 21:53:09 +0000 differ
1388=== added file 'graphics/play.png'
1389Binary files graphics/play.png 1970-01-01 00:00:00 +0000 and graphics/play.png 2014-11-29 21:53:09 +0000 differ
1390=== added file 'graphics/settings.png'
1391Binary files graphics/settings.png 1970-01-01 00:00:00 +0000 and graphics/settings.png 2014-11-29 21:53:09 +0000 differ
1392=== added file 'graphics/settings2.png'
1393Binary files graphics/settings2.png 1970-01-01 00:00:00 +0000 and graphics/settings2.png 2014-11-29 21:53:09 +0000 differ
1394=== added file 'graphics/settings3.png'
1395Binary files graphics/settings3.png 1970-01-01 00:00:00 +0000 and graphics/settings3.png 2014-11-29 21:53:09 +0000 differ
1396=== added directory 'locale'
1397=== renamed directory 'locale' => 'locale.moved'
1398=== added file 'locale/en.po'
1399--- locale/en.po 1970-01-01 00:00:00 +0000
1400+++ locale/en.po 2014-11-29 21:53:09 +0000
1401@@ -0,0 +1,141 @@
1402+# Russian translations for PACKAGE package
1403+# Английские переводы для пакета PACKAGE.
1404+# Copyright (C) 2014 THE PACKAGE'S COPYRIGHT HOLDER
1405+# This file is distributed under the same license as the PACKAGE package.
1406+# Зонов Роман <roman2861@yandex.ru>, 2014.
1407+#
1408+msgid ""
1409+msgstr ""
1410+"Project-Id-Version: PACKAGE VERSION\n"
1411+"Report-Msgid-Bugs-To: \n"
1412+"POT-Creation-Date: 2014-10-19 19:57+0400\n"
1413+"PO-Revision-Date: 2014-10-19 19:57+0400\n"
1414+"Last-Translator: Зонов Роман <roman2861@yandex.ru>\n"
1415+"Language-Team: Russian\n"
1416+"Language: ru\n"
1417+"MIME-Version: 1.0\n"
1418+"Content-Type: text/plain; charset=UTF-8\n"
1419+"Content-Transfer-Encoding: 8bit\n"
1420+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
1421+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
1422+
1423+#: Popular.qml:29 MyTracks.qml:31 Search.qml:78
1424+msgid "Actions"
1425+msgstr ""
1426+
1427+#: Popular.qml:30 MyTracks.qml:32 Search.qml:79
1428+msgid "What do you want to do?"
1429+msgstr ""
1430+
1431+#: Popular.qml:34 Search.qml:83
1432+msgid "To VK"
1433+msgstr ""
1434+
1435+#: Popular.qml:40 Search.qml:89
1436+msgid "To your best"
1437+msgstr ""
1438+
1439+#: MyTracks.qml:37
1440+msgid "To my best"
1441+msgstr ""
1442+
1443+#: MyTracks.qml:43
1444+msgid "Cancel"
1445+msgstr ""
1446+
1447+#: Search.qml:39
1448+msgid "Search..."
1449+msgstr ""
1450+
1451+#: TracksT.qml:14
1452+msgid "My tracks"
1453+msgstr ""
1454+
1455+#: TracksT.qml:21
1456+msgid "Popular"
1457+msgstr ""
1458+
1459+#: TracksT.qml:28
1460+msgid "Search"
1461+msgstr ""
1462+
1463+#: TracksT.qml:35
1464+msgid "Your best"
1465+msgstr ""
1466+
1467+#: TracksT.qml:42
1468+msgid "Settings"
1469+msgstr ""
1470+
1471+#: Settings.qml:9
1472+msgid "Show current song in status"
1473+msgstr ""
1474+
1475+#: Tutorial.qml:30
1476+msgid "Welcome to"
1477+msgstr ""
1478+
1479+#: Tutorial.qml:37
1480+msgid "zMusic"
1481+msgstr ""
1482+
1483+#: Tutorial.qml:58
1484+msgid "Swipe left to continue"
1485+msgstr ""
1486+
1487+#: Tutorial.qml:84 zmusic.qml:83
1488+msgid "What is VK?"
1489+msgstr ""
1490+
1491+#: Tutorial.qml:102
1492+msgid ""
1493+"VK is the largest European social network with more than a 100 million "
1494+"active users."
1495+msgstr ""
1496+
1497+#: Tutorial.qml:145
1498+msgid "Loading web page..."
1499+msgstr ""
1500+
1501+#: Tutorial.qml:209
1502+msgid "Enjoy it!"
1503+msgstr ""
1504+
1505+#: Tutorial.qml:227
1506+msgid ""
1507+"I hope, that you'll like it! Please, write your reviews about my app! I "
1508+"hope, that with your help we'll make bug-free, useful and beautiful "
1509+"application!"
1510+msgstr ""
1511+
1512+#: Tutorial.qml:238
1513+msgid "Press anywhere to start using zMusic!"
1514+msgstr ""
1515+
1516+#: zmusic.qml:84
1517+msgid ""
1518+"VK (Originally VKontakte, literally 'in contact') is the second biggest "
1519+"social network service in Europe after Facebook, it is available in several "
1520+"languages but popular particularly among Russian-speaking users around the "
1521+"world, especially in Russia, Ukraine, Azerbaijan, Kazakhstan, Moldova, "
1522+"Belarus, and Israel. Like other social networks, VK allows users to message "
1523+"contacts publicly or privately, create groups, public pages and events, "
1524+"share and tag images, audio and video, and play browser-based games."
1525+msgstr ""
1526+
1527+#: zmusic.qml:88
1528+msgid "Register"
1529+msgstr ""
1530+
1531+#: zmusic.qml:94
1532+msgid "Sign in"
1533+msgstr ""
1534+
1535+#: zmusic.qml:123
1536+#, qt-format
1537+msgid "%1 song(-s) were listened in zMusic today"
1538+msgstr ""
1539+
1540+#: zmusic.qml:124
1541+msgid "No songs were listened today"
1542+msgstr ""
1543
1544=== added file 'locale/messages.pot'
1545--- locale/messages.pot 1970-01-01 00:00:00 +0000
1546+++ locale/messages.pot 2014-11-29 21:53:09 +0000
1547@@ -0,0 +1,139 @@
1548+# SOME DESCRIPTIVE TITLE.
1549+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
1550+# This file is distributed under the same license as the PACKAGE package.
1551+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
1552+#
1553+#, fuzzy
1554+msgid ""
1555+msgstr ""
1556+"Project-Id-Version: PACKAGE VERSION\n"
1557+"Report-Msgid-Bugs-To: \n"
1558+"POT-Creation-Date: 2014-10-19 19:57+0400\n"
1559+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1560+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1561+"Language-Team: LANGUAGE <LL@li.org>\n"
1562+"Language: \n"
1563+"MIME-Version: 1.0\n"
1564+"Content-Type: text/plain; charset=CHARSET\n"
1565+"Content-Transfer-Encoding: 8bit\n"
1566+
1567+#: Popular.qml:29 MyTracks.qml:31 Search.qml:78
1568+msgid "Actions"
1569+msgstr ""
1570+
1571+#: Popular.qml:30 MyTracks.qml:32 Search.qml:79
1572+msgid "What do you want to do?"
1573+msgstr ""
1574+
1575+#: Popular.qml:34 Search.qml:83
1576+msgid "To VK"
1577+msgstr ""
1578+
1579+#: Popular.qml:40 Search.qml:89
1580+msgid "To your best"
1581+msgstr ""
1582+
1583+#: MyTracks.qml:37
1584+msgid "To my best"
1585+msgstr ""
1586+
1587+#: MyTracks.qml:43
1588+msgid "Cancel"
1589+msgstr ""
1590+
1591+#: Search.qml:39
1592+msgid "Search..."
1593+msgstr ""
1594+
1595+#: TracksT.qml:14
1596+msgid "My tracks"
1597+msgstr ""
1598+
1599+#: TracksT.qml:21
1600+msgid "Popular"
1601+msgstr ""
1602+
1603+#: TracksT.qml:28
1604+msgid "Search"
1605+msgstr ""
1606+
1607+#: TracksT.qml:35
1608+msgid "Your best"
1609+msgstr ""
1610+
1611+#: TracksT.qml:42
1612+msgid "Settings"
1613+msgstr ""
1614+
1615+#: Settings.qml:9
1616+msgid "Show current song in status"
1617+msgstr ""
1618+
1619+#: Tutorial.qml:30
1620+msgid "Welcome to"
1621+msgstr ""
1622+
1623+#: Tutorial.qml:37
1624+msgid "zMusic"
1625+msgstr ""
1626+
1627+#: Tutorial.qml:58
1628+msgid "Swipe left to continue"
1629+msgstr ""
1630+
1631+#: Tutorial.qml:84 zmusic.qml:83
1632+msgid "What is VK?"
1633+msgstr ""
1634+
1635+#: Tutorial.qml:102
1636+msgid ""
1637+"VK is the largest European social network with more than a 100 million "
1638+"active users."
1639+msgstr ""
1640+
1641+#: Tutorial.qml:145
1642+msgid "Loading web page..."
1643+msgstr ""
1644+
1645+#: Tutorial.qml:209
1646+msgid "Enjoy it!"
1647+msgstr ""
1648+
1649+#: Tutorial.qml:227
1650+msgid ""
1651+"I hope, that you'll like it! Please, write your reviews about my app! I "
1652+"hope, that with your help we'll make bug-free, useful and beautiful "
1653+"application!"
1654+msgstr ""
1655+
1656+#: Tutorial.qml:238
1657+msgid "Press anywhere to start using zMusic!"
1658+msgstr ""
1659+
1660+#: zmusic.qml:84
1661+msgid ""
1662+"VK (Originally VKontakte, literally 'in contact') is the second biggest "
1663+"social network service in Europe after Facebook, it is available in several "
1664+"languages but popular particularly among Russian-speaking users around the "
1665+"world, especially in Russia, Ukraine, Azerbaijan, Kazakhstan, Moldova, "
1666+"Belarus, and Israel. Like other social networks, VK allows users to message "
1667+"contacts publicly or privately, create groups, public pages and events, "
1668+"share and tag images, audio and video, and play browser-based games."
1669+msgstr ""
1670+
1671+#: zmusic.qml:88
1672+msgid "Register"
1673+msgstr ""
1674+
1675+#: zmusic.qml:94
1676+msgid "Sign in"
1677+msgstr ""
1678+
1679+#: zmusic.qml:123
1680+#, qt-format
1681+msgid "%1 song(-s) were listened in zMusic today"
1682+msgstr ""
1683+
1684+#: zmusic.qml:124
1685+msgid "No songs were listened today"
1686+msgstr ""
1687
1688=== added file 'locale/ru.po'
1689--- locale/ru.po 1970-01-01 00:00:00 +0000
1690+++ locale/ru.po 2014-11-29 21:53:09 +0000
1691@@ -0,0 +1,143 @@
1692+# Russian translation for zmusic
1693+# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
1694+# This file is distributed under the same license as the zmusic package.
1695+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
1696+#
1697+msgid ""
1698+msgstr ""
1699+"Project-Id-Version: zmusic\n"
1700+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1701+"POT-Creation-Date: 2014-10-19 19:57+0400\n"
1702+"PO-Revision-Date: 2014-10-22 19:18+0000\n"
1703+"Last-Translator: Zonov Roman <Unknown>\n"
1704+"Language-Team: Russian <ru@li.org>\n"
1705+"MIME-Version: 1.0\n"
1706+"Content-Type: text/plain; charset=UTF-8\n"
1707+"Content-Transfer-Encoding: 8bit\n"
1708+"X-Launchpad-Export-Date: 2014-10-22 19:28+0000\n"
1709+"X-Generator: Launchpad (build 17203)\n"
1710+
1711+#: Popular.qml:29 MyTracks.qml:31 Search.qml:78
1712+msgid "Actions"
1713+msgstr "Действия"
1714+
1715+#: Popular.qml:30 MyTracks.qml:32 Search.qml:79
1716+msgid "What do you want to do?"
1717+msgstr "Что вы хотите сделать?"
1718+
1719+#: Popular.qml:34 Search.qml:83
1720+msgid "To VK"
1721+msgstr "В VK"
1722+
1723+#: Popular.qml:40 Search.qml:89
1724+msgid "To your best"
1725+msgstr "В коллекцию"
1726+
1727+#: MyTracks.qml:37
1728+msgid "To my best"
1729+msgstr "В коллекцию"
1730+
1731+#: MyTracks.qml:43
1732+msgid "Cancel"
1733+msgstr "Отмена"
1734+
1735+#: Search.qml:39
1736+msgid "Search..."
1737+msgstr "Поиск..."
1738+
1739+#: TracksT.qml:14
1740+msgid "My tracks"
1741+msgstr "Мои аудиозаписи"
1742+
1743+#: TracksT.qml:21
1744+msgid "Popular"
1745+msgstr "Популярные"
1746+
1747+#: TracksT.qml:28
1748+msgid "Search"
1749+msgstr "Поиск"
1750+
1751+#: TracksT.qml:35
1752+msgid "Your best"
1753+msgstr "Ваша коллекция"
1754+
1755+#: TracksT.qml:42
1756+msgid "Settings"
1757+msgstr "Настройки"
1758+
1759+#: Settings.qml:9
1760+msgid "Show current song in status"
1761+msgstr "Транслировать песни в статус"
1762+
1763+#: Tutorial.qml:30
1764+msgid "Welcome to"
1765+msgstr "Добро пожаловать в"
1766+
1767+#: Tutorial.qml:37
1768+msgid "zMusic"
1769+msgstr "zMusic"
1770+
1771+#: Tutorial.qml:58
1772+msgid "Swipe left to continue"
1773+msgstr "Смахните влево для начала"
1774+
1775+#: Tutorial.qml:84 zmusic.qml:83
1776+msgid "What is VK?"
1777+msgstr "Что такое VK?"
1778+
1779+#: Tutorial.qml:102
1780+msgid ""
1781+"VK is the largest European social network with more than a 100 million "
1782+"active users."
1783+msgstr ""
1784+"VK это наикрупнейшная европейская социальная сеть с более, чем 100 миллионов "
1785+"активных пользователейю"
1786+
1787+#: Tutorial.qml:145
1788+msgid "Loading web page..."
1789+msgstr "Загрузка страницы..."
1790+
1791+#: Tutorial.qml:209
1792+msgid "Enjoy it!"
1793+msgstr "Наслаждайтесь!"
1794+
1795+#: Tutorial.qml:227
1796+msgid ""
1797+"I hope, that you'll like it! Please, write your reviews about my app! I "
1798+"hope, that with your help we'll make bug-free, useful and beautiful "
1799+"application!"
1800+msgstr ""
1801+"Я надеюсь, что вам понравится! Пожалуйста, пишите отзывы о приложении. Я "
1802+"надеюсь сделать приложение стабильным, красивым и удобным!"
1803+
1804+#: Tutorial.qml:238
1805+msgid "Press anywhere to start using zMusic!"
1806+msgstr "Нажмите для того, чтобы начать!"
1807+
1808+#: zmusic.qml:84
1809+msgid ""
1810+"VK (Originally VKontakte, literally 'in contact') is the second biggest "
1811+"social network service in Europe after Facebook, it is available in several "
1812+"languages but popular particularly among Russian-speaking users around the "
1813+"world, especially in Russia, Ukraine, Azerbaijan, Kazakhstan, Moldova, "
1814+"Belarus, and Israel. Like other social networks, VK allows users to message "
1815+"contacts publicly or privately, create groups, public pages and events, "
1816+"share and tag images, audio and video, and play browser-based games."
1817+msgstr ""
1818+
1819+#: zmusic.qml:88
1820+msgid "Register"
1821+msgstr "Регистрация"
1822+
1823+#: zmusic.qml:94
1824+msgid "Sign in"
1825+msgstr "Войти"
1826+
1827+#: zmusic.qml:123
1828+#, qt-format
1829+msgid "%1 song(-s) were listened in zMusic today"
1830+msgstr "%1 песня(-и) были прослушаны в zMusic сегодня"
1831+
1832+#: zmusic.qml:124
1833+msgid "No songs were listened today"
1834+msgstr "Вы сегодня не заходили в zMusic"
1835
1836=== added file 'manifest.json'
1837--- manifest.json 1970-01-01 00:00:00 +0000
1838+++ manifest.json 2014-11-29 21:53:09 +0000
1839@@ -0,0 +1,21 @@
1840+{
1841+ "name": "com.ubuntu.developer.roman2861.zmusic",
1842+ "description": "description of zmusic",
1843+ "architecture": "all",
1844+ "title": "zMusic",
1845+ "hooks": {
1846+ "zmusic": {
1847+ "account-application": "zmusic.application",
1848+ "account-service": "zmusic.service",
1849+ "apparmor": "zmusic.apparmor",
1850+ "desktop": "zmusic.desktop"
1851+ },
1852+ "vk": {
1853+ "account-provider": "plugin/com.ubuntu.developer.roman2861.zmusic_vk.provider",
1854+ "account-qml-plugin": "plugin/qml"
1855+ }
1856+ },
1857+ "version": "2.0",
1858+ "maintainer": "Zonov Roman <roman2861@yandex.ru>",
1859+ "framework": "ubuntu-sdk-14.10"
1860+}
1861
1862=== renamed file 'manifest.json' => 'manifest.json.moved'
1863=== added directory 'plugin'
1864=== added file 'plugin/com.ubuntu.developer.roman2861.zmusic_vk.provider'
1865--- plugin/com.ubuntu.developer.roman2861.zmusic_vk.provider 1970-01-01 00:00:00 +0000
1866+++ plugin/com.ubuntu.developer.roman2861.zmusic_vk.provider 2014-11-29 21:53:09 +0000
1867@@ -0,0 +1,27 @@
1868+<?xml version="1.0" encoding="UTF-8"?>
1869+<provider>
1870+ <name>VK</name>
1871+ <icon>logo4.jpg</icon>
1872+ <domains>.*vk\.com</domains>
1873+ <plugin>generic-oauth</plugin>
1874+ <single-account>true</single-account>
1875+
1876+ <template>
1877+ <group name="auth">
1878+ <setting name="method">oauth2</setting>
1879+ <setting name="mechanism">user_agent</setting>
1880+ <group name="oauth2">
1881+ <group name="user_agent">
1882+ <setting name="Host">oauth.vk.com</setting>
1883+ <setting name="AuthPath">/authorize</setting>
1884+ <setting name="RedirectUri">https://oauth.vk.com/blank.html</setting>
1885+ <setting name="Display">popup</setting>
1886+ <setting type="as" name="Scope">['audio']</setting>
1887+ <setting name="ClientId">3609494</setting>
1888+ <setting name="ResponseType">token</setting>
1889+ <setting type="as" name="AllowedSchemes">['https']</setting>
1890+ </group>
1891+ </group>
1892+ </group>
1893+ </template>
1894+</provider>
1895
1896=== added directory 'plugin/qml'
1897=== added file 'plugin/qml/Main.qml'
1898--- plugin/qml/Main.qml 1970-01-01 00:00:00 +0000
1899+++ plugin/qml/Main.qml 2014-11-29 21:53:09 +0000
1900@@ -0,0 +1,33 @@
1901+import Ubuntu.OnlineAccounts.Plugin 1.0
1902+
1903+OAuthMain {
1904+ creationComponent: OAuth {
1905+ function completeCreation(reply) {
1906+ console.log("Access token: " + reply.AccessToken)
1907+ var http = new XMLHttpRequest()
1908+ var url = "https://api.vk.com/method/users.get?access_token="+reply.AccessToken;
1909+ http.open("POST", url, true);
1910+ http.onreadystatechange = function() {
1911+ if (http.readyState === 4){
1912+ if (http.status == 200) {
1913+ console.log("ok")
1914+ console.log("response text: " + http.responseText)
1915+ var response = JSON.parse(http.responseText)
1916+ account.updateDisplayName(response.response[0].first_name+" "+response.response[0].last_name)
1917+ globalAccountService.updateSettings({
1918+ 'id': response.response[0].uid
1919+ })
1920+ account.synced.connect(finished)
1921+ account.sync()
1922+
1923+ } else {
1924+ console.log("error: " + http.status)
1925+ cancel()
1926+ }
1927+ }
1928+ };
1929+
1930+ http.send(null);
1931+ }
1932+ }
1933+}
1934
1935=== added file 'zmusic.apparmor'
1936--- zmusic.apparmor 1970-01-01 00:00:00 +0000
1937+++ zmusic.apparmor 2014-11-29 21:53:09 +0000
1938@@ -0,0 +1,11 @@
1939+{
1940+ "policy_groups": [
1941+ "networking",
1942+ "audio",
1943+ "usermetrics",
1944+ "video",
1945+ "webview",
1946+ "accounts"
1947+ ],
1948+ "policy_version": 1.2
1949+}
1950
1951=== renamed file 'zmusic.apparmor' => 'zmusic.apparmor.moved'
1952=== added file 'zmusic.application'
1953--- zmusic.application 1970-01-01 00:00:00 +0000
1954+++ zmusic.application 2014-11-29 21:53:09 +0000
1955@@ -0,0 +1,11 @@
1956+<?xml version="1.0" encoding="UTF-8" ?>
1957+<application>
1958+ <description>VK</description>
1959+
1960+ <services>
1961+ <service id="com.ubuntu.developer.roman2861.zmusic_zmusic">
1962+ <description>Do something with your Account Tester account</description>
1963+ </service>
1964+ </services>
1965+
1966+</application>
1967
1968=== added file 'zmusic.desktop'
1969--- zmusic.desktop 1970-01-01 00:00:00 +0000
1970+++ zmusic.desktop 2014-11-29 21:53:09 +0000
1971@@ -0,0 +1,10 @@
1972+[Desktop Entry]
1973+Name=zMusic
1974+Exec=qmlscene $@ zmusic.qml
1975+Icon=graphics/logo4.jpg
1976+Terminal=false
1977+Type=Application
1978+X-Ubuntu-Touch=true
1979+Name[ru_RU]=zmusic
1980+X-Ubuntu-Default-Department-ID=sound-video
1981+X-Ubuntu-Gettext-Domain=com.ubuntu.developer.roman2861.zmusic
1982
1983=== renamed file 'zmusic.desktop' => 'zmusic.desktop.moved'
1984=== added file 'zmusic.png'
1985Binary files zmusic.png 1970-01-01 00:00:00 +0000 and zmusic.png 2014-11-29 21:53:09 +0000 differ
1986=== added file 'zmusic.qml'
1987--- zmusic.qml 1970-01-01 00:00:00 +0000
1988+++ zmusic.qml 2014-11-29 21:53:09 +0000
1989@@ -0,0 +1,333 @@
1990+import QtQuick 2.0
1991+import UserMetrics 0.1
1992+import QtMultimedia 5.0
1993+import "Functions.js" as Js
1994+import Ubuntu.Components 1.1
1995+import QtGraphicalEffects 1.0
1996+import QtQuick.LocalStorage 2.0
1997+import Ubuntu.Components.Popups 0.1
1998+import Ubuntu.OnlineAccounts 0.1
1999+import Ubuntu.OnlineAccounts.Client 0.1
2000+import Ubuntu.Components.ListItems 0.1
2001+import "URLQuery.js" as URLQuery
2002+import "components"
2003+
2004+MainView {
2005+ // Note! applicationName needs to match the "name" field of the click manifest
2006+ applicationName: "com.ubuntu.developer.roman2861.zmusic"
2007+ id: mainview
2008+ width: units.gu(50)
2009+ height: units.gu(75)
2010+ backgroundColor: "#e5e5e5"
2011+ property int is_at
2012+ property bool wvisop: false
2013+ property var at
2014+ property var tracks
2015+ property int lt
2016+ property int slt
2017+ property int sslt
2018+ property int temp
2019+ property int csong
2020+ property int logined
2021+ property int issearch
2022+ property int ispopular
2023+ property int iscollection
2024+ property int mttd
2025+ property int mttd2
2026+ property int owner_id
2027+ property bool iwvl: false
2028+ property bool ptsb: false
2029+ property int ci
2030+ property bool sendtostatus: true
2031+ property bool oa: false
2032+ useDeprecatedToolbar: false
2033+ anchorToKeyboard: true
2034+ AccountServiceModel {
2035+ id: accounts
2036+ provider: "com.ubuntu.developer.roman2861.zmusic_vk"
2037+ applicationId: "com.ubuntu.developer.roman2861.zmusic_zmusic"
2038+ Component.onCompleted: {
2039+ console.log(accounts.count);
2040+ if(accounts.count===0) {
2041+ iwvl=true;
2042+ }
2043+ }
2044+ }
2045+ ListView {
2046+ id: accountsList
2047+ spacing: units.gu(1)
2048+ z: 0
2049+ anchors.fill: parent
2050+ model: accounts
2051+ delegate: Rectangle {
2052+ id: wrapper
2053+ width: accountsList.width
2054+ height: units.gu(10)
2055+ color: "transparent"
2056+ Component.onCompleted: {
2057+ console.log(accts.provider.id);
2058+ var params = {}
2059+ accts.authenticate(params)
2060+ }
2061+ AccountService {
2062+ id: accts
2063+ objectHandle: accountServiceHandle
2064+ onAuthenticated: {
2065+ moar.visible=false;
2066+ Js.success(reply.AccessToken, 2410788);
2067+ tutorial.visible=false;
2068+ }
2069+ }
2070+ }
2071+ }
2072+
2073+ ActivityIndicator {
2074+ id: act_ind_main
2075+ anchors.centerIn: parent
2076+ }
2077+ Tutorial {
2078+ id: tutorial
2079+ }
2080+ Setup {
2081+ id: setup
2082+ applicationId: "com.ubuntu.developer.roman2861.zmusic_zmusic"
2083+ providerId: "com.ubuntu.developer.roman2861.zmusic_vk"
2084+ }
2085+ MouseArea {
2086+ id: moar
2087+ anchors.fill: parent
2088+ z: 1000000
2089+ visible: false
2090+ onClicked: {
2091+ visible=false;
2092+ oa=false;
2093+ iwvl=false;
2094+ Js.success(at, owner_id);
2095+ tutorial.visible=false;
2096+ }
2097+ }
2098+
2099+ Component {
2100+ id: dialog
2101+ Dialog {
2102+ id: dialogue
2103+ title: i18n.tr("What is VK?")
2104+ text: i18n.tr("VK (Originally VKontakte, literally 'in contact') is the second biggest social network service in Europe after Facebook, it is available in several languages but popular particularly among Russian-speaking users around the world, especially in Russia, Ukraine, Azerbaijan, Kazakhstan, Moldova, Belarus, and Israel. Like other social networks, VK allows users to message contacts publicly or privately, create groups, public pages and events, share and tag images, audio and video, and play browser-based games.");
2105+ Row {
2106+ spacing: units.gu(1)
2107+ Button {
2108+ text: i18n.tr("Register");
2109+ color: "green"
2110+ onClicked: Qt.openUrlExternally("http://vk.com/");
2111+ width: (parent.width)/2
2112+ }
2113+ Button {
2114+ text: i18n.tr("Sign in")
2115+ onClicked: { slogo.start(); PopupUtils.close(dialogue) }
2116+ width: (parent.width)/2
2117+ }
2118+ }
2119+ }
2120+ }
2121+ Loader {
2122+ anchors.fill: parent
2123+ source: (logined == 1) ? Qt.resolvedUrl("TracksT.qml") : ""
2124+ }
2125+ ListModel {
2126+ id: musicmodel
2127+ }
2128+ ListModel {
2129+ id: popularmodel
2130+ }
2131+ ListModel {
2132+ id: searchmodel
2133+ }
2134+ ListModel {
2135+ id: downloadedmodel
2136+ }
2137+ ListModel {
2138+ id: collectionmodel
2139+ }
2140+ Metric {
2141+ id: zmetrics
2142+ name: "zmetrics"
2143+ format: i18n.tr("%1 song(-s) were listened in zMusic today")
2144+ emptyFormat: i18n.tr("No songs were listened today")
2145+ domain: "com.ubuntu.developer.roman2861.zmusic"
2146+ }
2147+ Image {
2148+ id: albumbg
2149+ z: -5
2150+ fillMode: Image.PreserveAspectCrop
2151+ clip: true
2152+ Component.onCompleted: {
2153+ if(mainview.width>mainview.height) { width=mainview.width; if(height<mainview.height) { height=mainview.height; } } else { height=mainview.height; if(width<mainview.width) { width=mainview.width; } }
2154+ }
2155+ opacity: 0.3
2156+ onSourceChanged: {
2157+ console.log(source);
2158+ }
2159+ }
2160+ ActivityIndicator {
2161+ id: loadimage
2162+ anchors.centerIn:parent
2163+ running: albumbg.progress!=1
2164+ opacity: 0
2165+ }
2166+
2167+ Audio {
2168+ id: player;
2169+ onVolumeChanged: { console.log(volume) }
2170+ onSourceChanged: { loadimage.opacity=0.3; zmetrics.increment(); }
2171+ onStopped: { if(status == Audio.EndOfMedia) { albumbg.source=""; if(ispopular==1) { Js.nextSongP(); } else if(issearch==1) { Js.nextSongS() } else if(iscollection==1) { Js.nextSongC() } else { Js.nextSong(); } } }
2172+ onPositionChanged: { playingstate.width=mainview.width*(position/duration); }
2173+ onBufferProgressChanged: {loadingstate.width=mainview.width*bufferProgress; if(bufferProgress==1) { hideload.start(); playingstate.visible=true; } else { playingstate.visible=false; } }
2174+ onPlaybackStateChanged: { if(player.playbackState==Audio.PlayingState) { play_button.source = Qt.resolvedUrl("graphics/pause.png") } else { play_button.source = Qt.resolvedUrl("graphics/play.png") } }
2175+ }
2176+ NumberAnimation { id: hideload; target: loadingstate; property: "opacity"; duration: 200; from: 1; to: 0 }
2177+ NumberAnimation { id: playeropen; target: playerr; property: "anchors.bottomMargin"; duration: 200; from: units.gu(-7); to: 0; }
2178+ ThinDivider {
2179+ id: pDivider
2180+
2181+ //rotation: 180
2182+
2183+ anchors {
2184+ left: parent.left
2185+ right: parent.right
2186+ bottom: playerr.top
2187+ }
2188+ }
2189+ Rectangle {
2190+ z: 99999
2191+ width: mainview.width
2192+ height: units.gu(7)
2193+ anchors.bottom: playerr.bottom
2194+ anchors.bottomMargin: 0
2195+ color: "#d5d5d5"
2196+ }
2197+
2198+ Rectangle {
2199+ z: 100000
2200+ id: playerr
2201+ width: mainview.width
2202+ height: units.gu(7)
2203+ anchors.bottom: parent.bottom
2204+ anchors.bottomMargin: -units.gu(7)-pDivider.height
2205+ color: Qt.rgba(0.5,0.5,0.5,0.5)
2206+ Text {
2207+ id: track_title
2208+ color: "white"
2209+ font.bold: true
2210+ font.pointSize: units.gu(1.5)
2211+ anchors.top: parent.top
2212+ anchors.topMargin: units.gu(1)
2213+ anchors.left: parent.left
2214+ anchors.leftMargin: units.gu(1)
2215+ width: mainview.width-controlsrow.width
2216+ wrapMode: Text.WordWrap
2217+ elide: Text.ElideRight
2218+ maximumLineCount: 1
2219+ }
2220+ Text {
2221+ id: track_artist
2222+ color: "white"
2223+ font.pointSize: units.gu(1)
2224+ anchors.top: track_title.bottom
2225+ anchors.topMargin: units.gu(0.5)
2226+ anchors.left: parent.left
2227+ anchors.leftMargin: units.gu(1)
2228+ width: mainview.width-controlsrow.width
2229+ wrapMode: Text.WordWrap
2230+ elide: Text.ElideRight
2231+ maximumLineCount: 1
2232+ }
2233+ Rectangle {
2234+ id: playingstate
2235+ height: units.gu(0.3)
2236+ anchors.bottom: parent.bottom
2237+ anchors.bottomMargin: 0
2238+ color: "orange"
2239+ }
2240+ Rectangle {
2241+ id: loadingstate
2242+ height: units.gu(0.3)
2243+ anchors.bottom: parent.bottom
2244+ anchors.bottomMargin: 0
2245+ color: "grey"
2246+ }
2247+ Row {
2248+ id: controlsrow
2249+ z: 100000
2250+ anchors.right: parent.right
2251+ anchors.rightMargin: 0
2252+ anchors.top: parent.top
2253+ anchors.topMargin: 0
2254+ Rectangle {
2255+ z: 100000
2256+ width: playerr.height
2257+ height: width
2258+ color: "transparent"
2259+ UbuntuShape {
2260+ anchors.centerIn: parent
2261+ width: parent.width-units.gu(1)
2262+ height: width
2263+ image: Image {
2264+ source: "graphics/back.png"
2265+ anchors.fill: parent
2266+ }
2267+ }
2268+ MouseArea {
2269+ anchors.fill: parent
2270+ onClicked: {
2271+ if(ispopular==1) { Js.lastSongP(); } else if(issearch==1) { Js.lastSongS(); } else if(iscollection==1) { Js.lastSongC(); } else { Js.lastSong(); }
2272+ }
2273+ }
2274+ }
2275+ Rectangle {
2276+ z: 100000
2277+ width: playerr.height
2278+ height: width
2279+ color: "transparent"
2280+ UbuntuShape {
2281+ anchors.centerIn: parent
2282+ width: parent.width-units.gu(1)
2283+ height: width
2284+ image: Image {
2285+ id: play_button
2286+ Component.onCompleted: {
2287+ source=Qt.resolvedUrl("graphics/play.png");
2288+ }
2289+ }
2290+ }
2291+ MouseArea {
2292+ anchors.fill: parent
2293+ onClicked: { player.playbackState === MediaPlayer.PlayingState ?
2294+ player.pause() : player.play()
2295+ }
2296+ }
2297+ }
2298+ Rectangle {
2299+ z: 100000
2300+ width: playerr.height
2301+ height: width
2302+ color: "transparent"
2303+ UbuntuShape {
2304+ anchors.centerIn: parent
2305+ width: parent.width-units.gu(1)
2306+ height: width
2307+ image: Image {
2308+ source: "graphics/forward.png"
2309+ anchors.fill: parent
2310+ }
2311+ }
2312+ MouseArea {
2313+ anchors.fill: parent
2314+ onClicked: {
2315+ if(ispopular==1) { Js.nextSongP(); } else if(issearch==1) { Js.nextSongS() } else if(iscollection==1) { Js.nextSongC() } else { Js.nextSong(); }
2316+ }
2317+ }
2318+ }
2319+ NumberAnimation { id: pl; target: player; property: "volume"; duration: 1000; from: 0; to: 1; onStarted: player.play(); }
2320+ }
2321+ }
2322+}
2323
2324=== renamed file 'zmusic.qml' => 'zmusic.qml.moved'
2325=== added file 'zmusic.qmlproject'
2326--- zmusic.qmlproject 1970-01-01 00:00:00 +0000
2327+++ zmusic.qmlproject 2014-11-29 21:53:09 +0000
2328@@ -0,0 +1,59 @@
2329+import QmlProject 1.1
2330+
2331+Project {
2332+ mainFile: "zmusic.qml"
2333+
2334+ /* Include .qml, .js, and image files from current directory and subdirectories */
2335+ QmlFiles {
2336+ directory: "."
2337+ }
2338+ JavaScriptFiles {
2339+ directory: "."
2340+ }
2341+ ImageFiles {
2342+ directory: "."
2343+ }
2344+ Files {
2345+ filter: "*"
2346+ }
2347+ Files {
2348+ filter: "www/*.html"
2349+ }
2350+ Files {
2351+ filter: "Makefile"
2352+ }
2353+ Files {
2354+ filter: "*.apparmor"
2355+ }
2356+ Files {
2357+ directory: "."
2358+ paths: ["manifest.json",".excludes"]
2359+ }
2360+ Files {
2361+ directory: "www"
2362+ filter: "*"
2363+ }
2364+ Files {
2365+ directory: "www/img/"
2366+ filter: "*"
2367+ }
2368+ Files {
2369+ directory: "www/css/"
2370+ filter: "*"
2371+ }
2372+ Files {
2373+ directory: "www/js/"
2374+ filter: "*"
2375+ }
2376+ Files {
2377+ directory: "tests/"
2378+ filter: "*"
2379+ }
2380+ Files {
2381+ directory: "debian"
2382+ filter: "*"
2383+ }
2384+ /* List of plugin directories passed to QML runtime */
2385+ importPaths: [ "." ,"/usr/bin","/usr/lib/x86_64-linux-gnu/qt5/qml" ]
2386+}
2387+
2388
2389=== renamed file 'zmusic.qmlproject' => 'zmusic.qmlproject.moved'
2390=== added file 'zmusic.qmlproject.user'
2391--- zmusic.qmlproject.user 1970-01-01 00:00:00 +0000
2392+++ zmusic.qmlproject.user 2014-11-29 21:53:09 +0000
2393@@ -0,0 +1,342 @@
2394+<?xml version="1.0" encoding="UTF-8"?>
2395+<!DOCTYPE QtCreatorProject>
2396+<!-- Written by QtCreator 3.1.1, 2014-11-28T00:45:44. -->
2397+<qtcreator>
2398+ <data>
2399+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
2400+ <value type="int">1</value>
2401+ </data>
2402+ <data>
2403+ <variable>ProjectExplorer.Project.EditorSettings</variable>
2404+ <valuemap type="QVariantMap">
2405+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
2406+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
2407+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
2408+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
2409+ <value type="QString" key="language">Cpp</value>
2410+ <valuemap type="QVariantMap" key="value">
2411+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
2412+ </valuemap>
2413+ </valuemap>
2414+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
2415+ <value type="QString" key="language">QmlJS</value>
2416+ <valuemap type="QVariantMap" key="value">
2417+ <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
2418+ </valuemap>
2419+ </valuemap>
2420+ <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
2421+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
2422+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
2423+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
2424+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
2425+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
2426+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
2427+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
2428+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
2429+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
2430+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
2431+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
2432+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
2433+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
2434+ <value type="int" key="EditorConfiguration.TabSize">8</value>
2435+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
2436+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
2437+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
2438+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
2439+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
2440+ <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
2441+ </valuemap>
2442+ </data>
2443+ <data>
2444+ <variable>ProjectExplorer.Project.PluginSettings</variable>
2445+ <valuemap type="QVariantMap"/>
2446+ </data>
2447+ <data>
2448+ <variable>ProjectExplorer.Project.Target.0</variable>
2449+ <valuemap type="QVariantMap">
2450+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
2451+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
2452+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{77514f38-5ba4-4eae-b0c4-4f110379c0d9}</value>
2453+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
2454+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
2455+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
2456+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
2457+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/roman/SDK/build-zmusic-Desktop-default</value>
2458+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
2459+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
2460+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
2461+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2462+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
2463+ </valuemap>
2464+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
2465+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
2466+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
2467+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2468+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
2469+ </valuemap>
2470+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
2471+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
2472+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
2473+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Default</value>
2474+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2475+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuQml.BuildConfiguration</value>
2476+ </valuemap>
2477+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
2478+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
2479+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
2480+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
2481+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
2482+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2483+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
2484+ </valuemap>
2485+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
2486+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
2487+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2488+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
2489+ </valuemap>
2490+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
2491+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
2492+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
2493+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
2494+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
2495+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
2496+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
2497+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
2498+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
2499+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
2500+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
2501+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
2502+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
2503+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
2504+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
2505+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
2506+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
2507+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
2508+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
2509+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
2510+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
2511+ <value type="int">0</value>
2512+ <value type="int">1</value>
2513+ <value type="int">2</value>
2514+ <value type="int">3</value>
2515+ <value type="int">4</value>
2516+ <value type="int">5</value>
2517+ <value type="int">6</value>
2518+ <value type="int">7</value>
2519+ <value type="int">8</value>
2520+ <value type="int">9</value>
2521+ <value type="int">10</value>
2522+ <value type="int">11</value>
2523+ <value type="int">12</value>
2524+ <value type="int">13</value>
2525+ <value type="int">14</value>
2526+ </valuelist>
2527+ <value type="int" key="PE.EnvironmentAspect.Base">0</value>
2528+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
2529+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName"></value>
2530+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">QML Scene</value>
2531+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmlProjectManager.QmlRunConfiguration.QmlScene</value>
2532+ <value type="QString" key="QmlProjectManager.QmlRunConfiguration.MainScript">CurrentFile</value>
2533+ <value type="QString" key="QmlProjectManager.QmlRunConfiguration.QDeclarativeViewerArguments"></value>
2534+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
2535+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
2536+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
2537+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
2538+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
2539+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
2540+ </valuemap>
2541+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
2542+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
2543+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
2544+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
2545+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
2546+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
2547+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
2548+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
2549+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
2550+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
2551+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
2552+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
2553+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
2554+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
2555+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
2556+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
2557+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
2558+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
2559+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
2560+ <value type="int">0</value>
2561+ <value type="int">1</value>
2562+ <value type="int">2</value>
2563+ <value type="int">3</value>
2564+ <value type="int">4</value>
2565+ <value type="int">5</value>
2566+ <value type="int">6</value>
2567+ <value type="int">7</value>
2568+ <value type="int">8</value>
2569+ <value type="int">9</value>
2570+ <value type="int">10</value>
2571+ <value type="int">11</value>
2572+ <value type="int">12</value>
2573+ <value type="int">13</value>
2574+ <value type="int">14</value>
2575+ </valuelist>
2576+ <value type="int" key="PE.EnvironmentAspect.Base">-1</value>
2577+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
2578+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName"></value>
2579+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">QML Viewer</value>
2580+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmlProjectManager.QmlRunConfiguration</value>
2581+ <value type="QString" key="QmlProjectManager.QmlRunConfiguration.MainScript">CurrentFile</value>
2582+ <value type="QString" key="QmlProjectManager.QmlRunConfiguration.QDeclarativeViewerArguments"></value>
2583+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
2584+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
2585+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
2586+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
2587+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
2588+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
2589+ </valuemap>
2590+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
2591+ </valuemap>
2592+ </data>
2593+ <data>
2594+ <variable>ProjectExplorer.Project.Target.1</variable>
2595+ <valuemap type="QVariantMap">
2596+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">UbuntuSDK for armhf (GCC ubuntu-sdk-14.10-utopic)</value>
2597+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">UbuntuSDK for armhf (GCC ubuntu-sdk-14.10-utopic)</value>
2598+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ad84ad47-38bf-4839-904c-6def13034c97}</value>
2599+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
2600+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
2601+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
2602+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
2603+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/roman/SDK/build-zmusic-UbuntuSDK_for_armhf_GCC_ubuntu_sdk_14_10_utopic-default</value>
2604+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
2605+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
2606+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
2607+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2608+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
2609+ </valuemap>
2610+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
2611+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
2612+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
2613+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2614+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
2615+ </valuemap>
2616+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
2617+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
2618+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
2619+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Default</value>
2620+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2621+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UbuntuQml.BuildConfiguration</value>
2622+ </valuemap>
2623+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
2624+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
2625+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
2626+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
2627+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
2628+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">UbuntuSDK Click build</value>
2629+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2630+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.ClickPackageStep</value>
2631+ <value type="int" key="Ubuntu.UbuntuPackageStep.PackageMode">1</value>
2632+ </valuemap>
2633+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
2634+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
2635+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Upload files to Ubuntu Device</value>
2636+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2637+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.UploadStep</value>
2638+ <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedFiles">
2639+ <value type="QString">/home/roman/SDK/build-zmusic-UbuntuSDK_for_armhf_GCC_ubuntu_sdk_14_10_utopic-default/com.ubuntu.developer.roman2861.zmusic_2.0_all.click</value>
2640+ <value type="QString">/usr/share/qtcreator/ubuntu/scripts/qtc_device_applaunch.py</value>
2641+ </valuelist>
2642+ <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedHosts">
2643+ <value type="QString">127.0.0.1</value>
2644+ <value type="QString">127.0.0.1</value>
2645+ </valuelist>
2646+ <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedRemotePaths">
2647+ <value type="QString">/tmp</value>
2648+ <value type="QString">/tmp</value>
2649+ </valuelist>
2650+ <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedSysroots">
2651+ <value type="QString">/var/lib/schroot/chroots/click-ubuntu-sdk-14.10-armhf</value>
2652+ <value type="QString">/var/lib/schroot/chroots/click-ubuntu-sdk-14.10-armhf</value>
2653+ </valuelist>
2654+ <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedTimes">
2655+ <value type="QDateTime">2014-11-28T00:45:41</value>
2656+ <value type="QDateTime">2014-11-28T00:45:41</value>
2657+ </valuelist>
2658+ </valuemap>
2659+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
2660+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
2661+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2662+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
2663+ </valuemap>
2664+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
2665+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy to Ubuntu Device</value>
2666+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
2667+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.DeployConfiguration</value>
2668+ </valuemap>
2669+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
2670+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
2671+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
2672+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
2673+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
2674+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
2675+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
2676+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
2677+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
2678+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
2679+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
2680+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
2681+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
2682+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
2683+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
2684+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
2685+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
2686+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
2687+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
2688+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
2689+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
2690+ <value type="int">0</value>
2691+ <value type="int">1</value>
2692+ <value type="int">2</value>
2693+ <value type="int">3</value>
2694+ <value type="int">4</value>
2695+ <value type="int">5</value>
2696+ <value type="int">6</value>
2697+ <value type="int">7</value>
2698+ <value type="int">8</value>
2699+ <value type="int">9</value>
2700+ <value type="int">10</value>
2701+ <value type="int">11</value>
2702+ <value type="int">12</value>
2703+ <value type="int">13</value>
2704+ <value type="int">14</value>
2705+ </valuelist>
2706+ <value type="int" key="PE.EnvironmentAspect.Base">1</value>
2707+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
2708+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName"></value>
2709+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">zmusic</value>
2710+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">UbuntuProjectManager.RemoteRunConfiguration.Appzmusic</value>
2711+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
2712+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
2713+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
2714+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
2715+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
2716+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
2717+ <value type="bool" key="UbuntuRemoteRunConfiguration.ForceInstall">false</value>
2718+ <value type="bool" key="UbuntuRemoteRunConfiguration.Uninstall">true</value>
2719+ </valuemap>
2720+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
2721+ </valuemap>
2722+ </data>
2723+ <data>
2724+ <variable>ProjectExplorer.Project.TargetCount</variable>
2725+ <value type="int">2</value>
2726+ </data>
2727+ <data>
2728+ <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
2729+ <value type="QByteArray">{a8a4b447-bcc1-4af4-a5ef-2b193d1e7e91}</value>
2730+ </data>
2731+ <data>
2732+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
2733+ <value type="int">15</value>
2734+ </data>
2735+</qtcreator>
2736
2737=== renamed file 'zmusic.qmlproject.user' => 'zmusic.qmlproject.user.moved'
2738=== added file 'zmusic.service'
2739--- zmusic.service 1970-01-01 00:00:00 +0000
2740+++ zmusic.service 2014-11-29 21:53:09 +0000
2741@@ -0,0 +1,6 @@
2742+<?xml version="1.0" encoding="UTF-8"?>
2743+<service>
2744+ <type>zm</type>
2745+ <name>VK</name>
2746+ <provider>com.ubuntu.developer.roman2861.zmusic_vk</provider>
2747+</service>

Subscribers

People subscribed via source and target branches

to all changes: