Merge lp:~alivema4ever/ubuntu/trusty/smtube/lp-1350406-fix into lp:ubuntu/trusty/smtube

Proposed by Alif M. Ahmad
Status: Rejected
Rejected by: Jamie Strandboge
Proposed branch: lp:~alivema4ever/ubuntu/trusty/smtube/lp-1350406-fix
Merge into: lp:ubuntu/trusty/smtube
Diff against target: 47084 lines (+23271/-10307)
109 files modified
Changelog (+59/-0)
Readme.txt (+1/-1)
Release_notes.txt (+17/-0)
create_deb.sh (+1/-1)
debian-rvm/changelog-orig (+19/-0)
debian-rvm/rules (+1/-1)
debian/changelog (+21/-0)
debian/control (+3/-3)
debian/copyright (+1/-1)
smtube.desktop (+2/-2)
src/Amiga/AmigaOS4_ReadMe.txt (+66/-0)
src/Amiga/OpenWorkbench.rexx (+17/-0)
src/Amiga/PlayVideo.rexx (+103/-0)
src/Amiga/Populate_info.rexx (+9/-0)
src/about.cpp (+54/-33)
src/about.h (+1/-1)
src/codedownloader.cpp (+2/-0)
src/codedownloader.h (+1/-1)
src/configdialog.cpp (+19/-44)
src/configdialog.h (+7/-1)
src/configdialog.ui (+39/-31)
src/downloadfile.cpp (+5/-7)
src/downloadfile.h (+1/-1)
src/filechooser.cpp (+1/-1)
src/filechooser.h (+1/-1)
src/fontpref.h (+28/-0)
src/hcplayer.h (+53/-0)
src/icons.qrc (+12/-0)
src/lineedit_with_icon.cpp (+1/-1)
src/lineedit_with_icon.h (+1/-1)
src/main.cpp (+15/-3)
src/myborder.cpp (+1/-1)
src/myborder.h (+1/-1)
src/myicon.cpp (+1/-1)
src/myicon.h (+1/-1)
src/players.cpp (+15/-5)
src/players.h (+1/-1)
src/qtsingleapplication/qtlocalpeer.cpp (+18/-15)
src/qtsingleapplication/qtlocalpeer.h (+15/-14)
src/qtsingleapplication/qtlockedfile.cpp (+12/-11)
src/qtsingleapplication/qtlockedfile.h (+15/-14)
src/qtsingleapplication/qtlockedfile_unix.cpp (+12/-11)
src/qtsingleapplication/qtlockedfile_win.cpp (+17/-12)
src/qtsingleapplication/qtsingleapplication.cpp (+17/-14)
src/qtsingleapplication/qtsingleapplication.h (+18/-15)
src/qtsingleapplication/qtsingleapplication.pri (+1/-0)
src/qtsingleapplication/qtsinglecoreapplication.cpp (+12/-11)
src/qtsingleapplication/qtsinglecoreapplication.h (+13/-12)
src/recordingdialog.cpp (+135/-31)
src/recordingdialog.h (+6/-5)
src/regions.cpp (+87/-0)
src/regions.h (+38/-0)
src/retrieveyoutubeurl.cpp (+358/-44)
src/retrieveyoutubeurl.h (+28/-6)
src/rvu.cpp (+1/-1)
src/rvu.h (+1/-1)
src/searchbox.cpp (+1/-1)
src/searchbox.h (+1/-1)
src/smtube.pro (+53/-17)
src/smtube.rc (+2/-2)
src/translations/.tx/config (+1/-1)
src/translations/smtube_ar.ts (+979/-0)
src/translations/smtube_bg.ts (+510/-417)
src/translations/smtube_ca.ts (+976/-0)
src/translations/smtube_cs.ts (+444/-334)
src/translations/smtube_de.ts (+970/-0)
src/translations/smtube_el.ts (+507/-450)
src/translations/smtube_en.ts (+447/-337)
src/translations/smtube_es.ts (+733/-288)
src/translations/smtube_et.ts (+975/-0)
src/translations/smtube_eu.ts (+444/-334)
src/translations/smtube_fi.ts (+447/-337)
src/translations/smtube_fr.ts (+970/-0)
src/translations/smtube_gl.ts (+451/-353)
src/translations/smtube_he_IL.ts (+453/-338)
src/translations/smtube_hr.ts (+444/-334)
src/translations/smtube_hu.ts (+484/-426)
src/translations/smtube_id.ts (+480/-382)
src/translations/smtube_it.ts (+970/-0)
src/translations/smtube_ja.ts (+447/-337)
src/translations/smtube_ka.ts (+445/-331)
src/translations/smtube_ko.ts (+970/-0)
src/translations/smtube_lt.ts (+454/-362)
src/translations/smtube_ms_MY.ts (+444/-334)
src/translations/smtube_nn_NO.ts (+451/-373)
src/translations/smtube_nqo.ts (+974/-0)
src/translations/smtube_pl.ts (+548/-480)
src/translations/smtube_pt.ts (+452/-342)
src/translations/smtube_pt_BR.ts (+467/-374)
src/translations/smtube_ru_RU.ts (+454/-324)
src/translations/smtube_sr.ts (+447/-337)
src/translations/smtube_sv.ts (+450/-372)
src/translations/smtube_tr.ts (+491/-425)
src/translations/smtube_uk.ts (+444/-334)
src/translations/smtube_vi.ts (+451/-353)
src/translations/smtube_zh_CN.ts (+479/-421)
src/translations/smtube_zh_TW.ts (+974/-0)
src/version.cpp (+2/-2)
src/version.h (+1/-1)
src/ytdataapi.cpp (+4/-4)
src/ytdataapi.h (+1/-1)
src/ytdelegate.cpp (+12/-10)
src/ytdelegate.h (+1/-1)
src/ytdialog.cpp (+191/-32)
src/ytdialog.h (+20/-4)
src/ytsig.cpp (+50/-30)
src/ytsig.h (+8/-6)
src/yttabbar.cpp (+11/-2)
src/yttabbar.h (+1/-1)
To merge this branch: bzr merge lp:~alivema4ever/ubuntu/trusty/smtube/lp-1350406-fix
Reviewer Review Type Date Requested Status
Jamie Strandboge Disapprove
Review via email: mp+228885@code.launchpad.net

Description of the change

Built for use with smplayer 14.3.0

To post a comment you must log in.
Revision history for this message
Jamie Strandboge (jdstrand) wrote :

Thank you for preparing this merge request. Updating trusty to a new version like this does not meet the SRU criteria as laid out in https://wiki.ubuntu.com/StableReleaseUpdates. This would be better served to include in trusty-backports. See https://help.ubuntu.com/community/UbuntuBackports.

review: Disapprove

Unmerged revisions

7. By Alif M. Ahmad

Packaging 2.1-2 for trusty (lp: #1350406)

6. By Alessio Treglia

Add mpv as optional dependency. (Closes: #752590)

5. By Alessio Treglia

* New upstream release.
* Fix VCS field. (Closes: #722434)
* Update copyright holders of debian/* files.
* Bump Standards.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Changelog'
2--- Changelog 2013-10-03 17:16:56 +0000
3+++ Changelog 2014-07-30 15:30:47 +0000
4@@ -1,3 +1,62 @@
5+Version 2.1:
6+
7+(2014-03-25)
8+ * When saving DASH 1080, be sure the video and audio files
9+ have the same name.
10+ * Disable the retry option for DASH streams since that option
11+ doesn't work well yet.
12+
13+(2014-03-24)
14+ * Increase speed when downloading DASH streams.
15+
16+
17+Version 2.0:
18+
19+(2014-03-10)
20+ * If there's no 1080p video in the normal format, try
21+ to download the 1080p video in the DASH format. That
22+ actually downloads two files, a mp4 with the video only
23+ and a m4a with the audio.
24+
25+(2014-03-09)
26+ * Add an option to record audio.
27+
28+(2014-03-08)
29+ * Use the user's country for default region.
30+
31+(2014-02-18)
32+ * Add two actions to increase or reduce the font size
33+ (shortcuts Ctrl+Plus and Ctrl+Minus).
34+
35+(2014-01-23)
36+ * Add a patch to support AmigaOS4 by zzd10h:
37+ http://forum.smplayer.info/viewtopic.php?f=4&t=7081
38+
39+(2014-01-17)
40+ * Add the Italian translation.
41+
42+(2014-01-13)
43+ * Add the French translation.
44+
45+(2013-12-05)
46+ * Add mpv to the list of players.
47+
48+(2013-10-21)
49+ * Add an option to add URL to the SMPlayer playlist.
50+
51+(2013-10-17)
52+ * Replace the 'Most Rated' tab with 'Sports'.
53+
54+(2013-09-12)
55+ * Keys work now in the video list.
56+
57+(2013-09-09)
58+ * Improve support for the encrypted signatures of Youtube.
59+
60+(2013-08-30 - 2013-10-10)
61+ * Adapt the code for Qt 5.
62+
63+
64 Version 1.8:
65
66 (2013-08-05)
67
68=== modified file 'Readme.txt'
69--- Readme.txt 2013-04-13 00:30:34 +0000
70+++ Readme.txt 2014-07-30 15:30:47 +0000
71@@ -1,5 +1,5 @@
72 smtube - a small youtube browser
73- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
74+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
75 Copyright (C) 2010 Ori Rejwan
76
77 This program is free software; you can redistribute it and/or modify
78
79=== modified file 'Release_notes.txt'
80--- Release_notes.txt 2013-10-03 17:16:56 +0000
81+++ Release_notes.txt 2014-07-30 15:30:47 +0000
82@@ -1,3 +1,20 @@
83+Version 2.1
84+
85+ * Improve the download speed for DASH formats.
86+
87+
88+Version 2.0
89+
90+ * New option to record audio.
91+ * Download 1080p in DASH format.
92+ * The 'Most Rated' tab has been replaced with 'Sports'.
93+ * An option to add the URL to the SMPlayer playlist has been added.
94+ * A default region is selected according to the user's language and country.
95+ * Better support for encrypted signatures.
96+ * New translations: Italian and French.
97+ * Possibility to compile with Qt 5.
98+
99+
100 Version 1.8
101
102 * Adapt for Youtube changes.
103
104=== modified file 'create_deb.sh'
105--- create_deb.sh 2013-10-03 17:16:56 +0000
106+++ create_deb.sh 2014-07-30 15:30:47 +0000
107@@ -4,7 +4,7 @@
108 cp debian-rvm/changelog-orig debian-rvm/changelog
109
110 ./get_svn_revision.sh
111-#dch -v 1.8-`cat svn_revision` "New version"
112+#dch -v 2.1-`cat svn_revision` "New version"
113
114 #dpkg-buildpackage -rfakeroot
115
116
117=== modified file 'debian-rvm/changelog-orig'
118--- debian-rvm/changelog-orig 2013-10-03 17:16:56 +0000
119+++ debian-rvm/changelog-orig 2014-07-30 15:30:47 +0000
120@@ -1,3 +1,22 @@
121+smtube (2.1) precise; urgency=low
122+
123+ * Improve the download speed for DASH formats.
124+
125+ -- Ricardo Villalba <rvm@users.sourceforge.net> Tue, 25 Mar 2014 23:03:47 +0100
126+
127+smtube (2.0) precise; urgency=low
128+
129+ * New option to record audio.
130+ * Download 1080p in DASH format.
131+ * The 'Most Rated' tab has been replaced with 'Sports'.
132+ * An option to add the URL to the SMPlayer playlist has been added.
133+ * A default region is selected according to the user's language and country.
134+ * Better support for encrypted signatures.
135+ * New translations: Italian and French.
136+ * Possibility to compile with Qt 5.
137+
138+ -- Ricardo Villalba <rvm@users.sourceforge.net> Thu, 13 Mar 2014 23:22:31 +0100
139+
140 smtube (1.8) precise; urgency=low
141
142 * Adapt for Youtube changes.
143
144=== modified file 'debian-rvm/rules'
145--- debian-rvm/rules 2013-02-13 11:48:44 +0000
146+++ debian-rvm/rules 2014-07-30 15:30:47 +0000
147@@ -34,7 +34,7 @@
148 dh_testdir
149
150 # Add here commands to compile the package.
151- $(MAKE) PREFIX=/usr
152+ $(MAKE) PREFIX=/usr QMAKE=qmake-qt4 LRELEASE=lrelease-qt4
153
154 touch $@
155
156
157=== modified file 'debian/changelog'
158--- debian/changelog 2013-10-03 17:16:56 +0000
159+++ debian/changelog 2014-07-30 15:30:47 +0000
160@@ -1,3 +1,24 @@
161+smtube (2.1-2ubuntu1) trusty; urgency=medium
162+
163+ * Packaging 2.1-2 for trusty (lp: #1350406)
164+
165+ -- Alif M. Ahmad <alivema4ever@gmail.com> Wed, 30 Jul 2014 11:25:36 -0400
166+
167+smtube (2.1-2) unstable; urgency=medium
168+
169+ * Add mpv as optional dependency. (Closes: #752590)
170+
171+ -- Alessio Treglia <alessio@debian.org> Fri, 11 Jul 2014 16:13:26 +0100
172+
173+smtube (2.1-1) unstable; urgency=low
174+
175+ * New upstream release.
176+ * Fix VCS field. (Closes: #722434)
177+ * Update copyright holders of debian/* files.
178+ * Bump Standards.
179+
180+ -- Alessio Treglia <alessio@debian.org> Sun, 30 Mar 2014 19:03:04 +0100
181+
182 smtube (1.8-1) unstable; urgency=low
183
184 * Upload to unstable.
185
186=== modified file 'debian/control'
187--- debian/control 2013-02-13 11:48:44 +0000
188+++ debian/control 2014-07-30 15:30:47 +0000
189@@ -8,15 +8,15 @@
190 debhelper (>= 9~),
191 libqt4-dev (>= 4.3),
192 zlib1g-dev
193-Standards-Version: 3.9.4
194+Standards-Version: 3.9.5
195 Homepage: http://smplayer.sourceforge.net/smtube.php
196-Vcs-Git: git://anonscm.debian.org/pkg-multimedia/smplayer.git
197+Vcs-Git: git://anonscm.debian.org/pkg-multimedia/smtube.git
198 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-multimedia/smtube.git
199
200 Package: smtube
201 Architecture: any
202 Depends:
203- smplayer | mplayer2 | mplayer | vlc | totem | gnome-mplayer,
204+ smplayer | mplayer2 | mpv | mplayer | vlc | totem | gnome-mplayer,
205 ${misc:Depends},
206 ${shlibs:Depends}
207 Description: YouTube videos browser
208
209=== modified file 'debian/copyright'
210--- debian/copyright 2013-04-13 00:30:34 +0000
211+++ debian/copyright 2014-07-30 15:30:47 +0000
212@@ -24,7 +24,7 @@
213 License: BSD-3-clause
214
215 Files: debian/*
216-Copyright: 2013 Alessio Treglia <alessio@debian.org>
217+Copyright: 2013-2014 Alessio Treglia <alessio@debian.org>
218 License: GPL-2+
219
220 License: GPL-2+
221
222=== modified file 'smtube.desktop'
223--- smtube.desktop 2013-02-13 11:48:44 +0000
224+++ smtube.desktop 2014-07-30 15:30:47 +0000
225@@ -4,7 +4,7 @@
226 Comment[es]=Permite realizar búsquedas y descargar vídeos de YouTube
227 Comment[ja]=YouTube �らビデオを検索�よ�ダウンロード���
228 Comment[pt]=Procurar e transferir vídeos do YouTube
229-Comment[eu]=YouTubeko bideoak bilatzea eta jeistea ahalbidetzen du
230+Comment[eu]=Bilatu eta jeitsi bideoak YouTube-tik
231 Comment[zh_CN]=�索和下载 YouTube 视频
232 GenericName=Youtube Browser
233 GenericName[es]=Buscar vídeos en YouTube
234@@ -16,7 +16,7 @@
235 Name=SMPlayer YouTube Browser
236 Name[ja]=SMPlayer - YouTube ブラウザー
237 Name[pt]=SMPlayer - Explorador YouTube
238-Name[eu]=SMPlayer - YouTube Bilatzailea
239+Name[eu]=SMPlayer - YouTube Nabigatzailea
240 Name[zh_CN]=SMPlayer - YouTube �览器
241 Type=Application
242 Categories=Qt;KDE;AudioVideo;Player;Video;
243
244=== added directory 'src/Amiga'
245=== added file 'src/Amiga.info'
246Binary files src/Amiga.info 1970-01-01 00:00:00 +0000 and src/Amiga.info 2014-07-30 15:30:47 +0000 differ
247=== added file 'src/Amiga/AmigaOS4_ReadMe.txt'
248--- src/Amiga/AmigaOS4_ReadMe.txt 1970-01-01 00:00:00 +0000
249+++ src/Amiga/AmigaOS4_ReadMe.txt 2014-07-30 15:30:47 +0000
250@@ -0,0 +1,66 @@
251+SMTube for AmigaOS 4.1
252+
253+
254+SMTube for AmigaOS4 is a port of SMTube for AmigaOS 4 computers (aka Amiga-NG, successor of popular Classic Commodore Amiga)
255+
256+
257+A) Building
258+
259+Prerequisites :
260+
261+- AmigaOS4 SDK (Hyperion website)
262+
263+- Qt port from Alfkil Thorbjørn Wennermark (OS4Depot)
264+
265+
266+1- Download the current svn sources :
267+
268+svn co https://subversion.assembla.com/svn/smplayer/smtube/trunk/ smtube
269+
270+2- in the SMTube svn drawer, in a CLI window, type :
271+
272+sh
273+
274+./get_svn_revision.sh to build the svn version file used in version.cpp
275+
276+cd src
277+
278+qmake *to build the Qt project file*
279+
280+gmake *to build SMTube*
281+
282+lrelease smtube.pro *to build the translations files. Cancel Requesters if needed*
283+
284+cd Amiga
285+
286+rx Populate_info.rexx *to copy the .info file for SMTube executable, Amiga and Translations drawers*
287+
288+
289+B) Usage ?
290+
291+Before launching SMTube, review Amiga/PlayVideo.rexx file to
292+
293+1- specify the location of your MPlayer binary (stream support needed, MUIMplayer or SDLMplayer)
294+example: MPLAYER = "APPDIR:MPlayer"
295+
296+2- optionally, add options to MPlayer
297+For example: MPLAYER_OPTIONS = "-vo cgx_wpa -cache 8192" for MUIMplayer on NON overlay compatible system.
298+
299+3- optionally, specify the position of the output console
300+For example: MPLAYER_CONSOLE = "1450/975/465/99" to get a log console in the bottom right corner on a 1920x1080 screen
301+
302+4- optionally, specify the number of seconds that the Console will be kept opened after MPlayer has started.
303+Could be useful to debug if the streaming failed.
304+SECONDS = 10
305+
306+
307+Many thanks to :
308+
309+Ricardo 'rvm' Villalba for his SMTube program and for having included AmigaOS4 modifications
310+
311+Alfkil Thorbjørn Wennermark for the AmigaOS 4.1 port of Qt
312+
313+
314
315+Guillaume 'zzd10h' Boesel
316+2014/01/23
317\ No newline at end of file
318
319=== added file 'src/Amiga/AmigaOS4_ReadMe.txt.info'
320Binary files src/Amiga/AmigaOS4_ReadMe.txt.info 1970-01-01 00:00:00 +0000 and src/Amiga/AmigaOS4_ReadMe.txt.info 2014-07-30 15:30:47 +0000 differ
321=== added file 'src/Amiga/OpenWorkbench.rexx'
322--- src/Amiga/OpenWorkbench.rexx 1970-01-01 00:00:00 +0000
323+++ src/Amiga/OpenWorkbench.rexx 2014-07-30 15:30:47 +0000
324@@ -0,0 +1,17 @@
325+/* REXX */
326+parse arg PATH
327+ADDRESS WORKBENCH
328+
329+PATH = right(PATH,length(PATH)-1)
330+A = pos("/",PATH)
331+if A > 0,
332+then do
333+ /*say A*/
334+ PATH = OVERLAY(':',PATH,A)
335+end
336+
337+PATH = INSERT('"',PATH)
338+PATH = INSERT('"',PATH,length(PATH))
339+/*say PATH*/
340+
341+WINDOW PATH OPEN
342\ No newline at end of file
343
344=== added file 'src/Amiga/OpenWorkbench.rexx.info'
345Binary files src/Amiga/OpenWorkbench.rexx.info 1970-01-01 00:00:00 +0000 and src/Amiga/OpenWorkbench.rexx.info 2014-07-30 15:30:47 +0000 differ
346=== added file 'src/Amiga/PlayVideo.rexx'
347--- src/Amiga/PlayVideo.rexx 1970-01-01 00:00:00 +0000
348+++ src/Amiga/PlayVideo.rexx 2014-07-30 15:30:47 +0000
349@@ -0,0 +1,103 @@
350+/* REXX */
351+parse arg type url
352+
353+/* UPDATE THESE PARAMETERS IF NEEDED */
354+
355+/* TAKE CARE TO SPECIFY THE PATH OF MUI-MPlayer OR SDL MPlayer SVN-r32561 TO ALLOW STREAMING IN OPTION MPLAYER = "" */
356+/* Others players or, even, other versions of MPlayer are NOT supported */
357+
358+
359+MPLAYER_OPTIONS = ""
360+DEBUG = ON
361+WAIT = ON
362+SECONDS = 10
363+MPLAYER = "APPDIR:MPlayer"
364+MPLAYER_CONSOLE = "0/400/640/400"
365+/*MPLAYER_CONSOLE = "1450/975/465/99" */ /* console in lower right corner ONLY for 1920x1080 screen */
366+
367+
368+/* END OF UPDATABLES PARAMETERS */
369+
370+/* examples */
371+/*MPLAYER = "APPDIR:MPlayer_SDL_1.1.4" */
372+/*MPLAYER = "APPDIR:MPlayer_MUI" */
373+/*MPLAYER_OPTIONS = "-vo cgx_wpa -cache 8192" */ /* for MUI-Mplayer without overlay */
374+
375+
376+/* DON'T MODIFY BELOW THESE LINES */
377+/* DON'T MODIFY BELOW THESE LINES */
378+/* DON'T MODIFY BELOW THESE LINES */
379+/* DON'T MODIFY BELOW THESE LINES */
380+
381+
382+/* for SDL-MPlayer 4.2.4 complaining about a HTTP: assign at startup */
383+ADDRESS COMMAND "ASSIGN http: RAM:"
384+
385+
386+if type = "file", /* pour lire les vidéos déjà téléchargées */
387+then do
388+ url = strip(url)
389+ url = right(url,length(url)-1)
390+ A = pos("/",url)
391+ if A > 0,
392+ then do
393+ url = OVERLAY(':',url,A)
394+ end
395+
396+ url = INSERT('"',url)
397+ url = INSERT('"',url,length(url))
398+end
399+
400+if DEBUG = ON,
401+then do
402+ /* console open for debug log */
403+ call close STDOUT
404+ /*open(STDOUT, 'con:0/400/640/400/smTube AmigaOS4 console/CLOSE',W) */
405+ open(STDOUT, 'con:'MPLAYER_CONSOLE'/smTube AmigaOS4 console/CLOSE',W)
406+
407+ say "URL = "url
408+ say "Mplayer options ="MPLAYER_OPTIONS
409+
410+ ADDRESS COMMAND MPLAYER MPLAYER_OPTIONS url
411+
412+ SAY " "
413+ SAY "------------------------- smTube AmigaOS4 -------------------------"
414+ SAY " "
415+ SAY "If you encounter playback problems, check MPlayer option (MPLAYER_OPTIONS = " ") in Amiga\PlayVideo.rexx."
416+ SAY " "
417+ SAY "Streaming seems to work only with MUI-Mplayer (MPlayer UNKNOWN-4.4.3 (C) 2000-2010 MPlayer Team)"
418+ SAY "or SDL MPlayer SVN-r32561-snapshot-4.2.4"
419+ SAY " "
420+ SAY "This DEBUG console can be turned OFF in Amiga\PlayVideo.rexx (DEBUG = OFF)."
421+ SAY " "
422+
423+ if wait = ON,
424+ then do
425+ SAY "Waiting "SECONDS" seconds before to close this debug window..."
426+ SAY " "
427+ SAY "Wait seconds can be modified in Amiga\PlayVideo.rexx (SECONDS = x)"
428+ SAY " "
429+ SAY "Wait time can be turned OFF in Amiga\PlayVideo.rexx (WAIT = OFF)"
430+ SAY " "
431+ SAY "----------------------------------------------------------------------"
432+ ADDRESS COMMAND "WAIT "SECONDS
433+ end
434+ else do
435+ SAY "----------------------------------------------------------------------"
436+ end
437+
438+ call close STDOUT
439+end
440+else do
441+ /* no debug output */
442+ ADDRESS COMMAND MPLAYER MPLAYER_OPTIONS url ">NIL: *>NIL:"
443+end
444+
445+
446+EXIT
447+
448+
449+
450+
451+
452+
453
454=== added file 'src/Amiga/PlayVideo.rexx.info'
455Binary files src/Amiga/PlayVideo.rexx.info 1970-01-01 00:00:00 +0000 and src/Amiga/PlayVideo.rexx.info 2014-07-30 15:30:47 +0000 differ
456=== added file 'src/Amiga/Populate_info.rexx'
457--- src/Amiga/Populate_info.rexx 1970-01-01 00:00:00 +0000
458+++ src/Amiga/Populate_info.rexx 2014-07-30 15:30:47 +0000
459@@ -0,0 +1,9 @@
460+/* REXX */
461+
462+ADDRESS COMMAND 'COPY icons/smtube.info TO /smtube.info ALL CLONE QUIET'
463+ADDRESS COMMAND 'COPY icons/Amiga.info TO /Amiga.info ALL CLONE QUIET'
464+ADDRESS COMMAND 'COPY icons/AmigaOS4_ReadMe.txt.info TO AmigaOS4_ReadMe.txt.info ALL CLONE QUIET'
465+ADDRESS COMMAND 'COPY icons/translations.info TO /translations.info ALL CLONE QUIET'
466+ADDRESS COMMAND 'PROTECT PlayVideo.rexx +S QUIET'
467+ADDRESS COMMAND 'PROTECT OpenWorkbench.rexx +S QUIET'
468+exit
469\ No newline at end of file
470
471=== added file 'src/Amiga/Populate_info.rexx.info'
472Binary files src/Amiga/Populate_info.rexx.info 1970-01-01 00:00:00 +0000 and src/Amiga/Populate_info.rexx.info 2014-07-30 15:30:47 +0000 differ
473=== added directory 'src/Amiga/Videos'
474=== added file 'src/Amiga/Videos.info'
475Binary files src/Amiga/Videos.info 1970-01-01 00:00:00 +0000 and src/Amiga/Videos.info 2014-07-30 15:30:47 +0000 differ
476=== added directory 'src/Amiga/icons'
477=== added file 'src/Amiga/icons.info'
478Binary files src/Amiga/icons.info 1970-01-01 00:00:00 +0000 and src/Amiga/icons.info 2014-07-30 15:30:47 +0000 differ
479=== added file 'src/Amiga/icons/Amiga.info'
480Binary files src/Amiga/icons/Amiga.info 1970-01-01 00:00:00 +0000 and src/Amiga/icons/Amiga.info 2014-07-30 15:30:47 +0000 differ
481=== added file 'src/Amiga/icons/AmigaOS4_ReadMe.txt.info'
482Binary files src/Amiga/icons/AmigaOS4_ReadMe.txt.info 1970-01-01 00:00:00 +0000 and src/Amiga/icons/AmigaOS4_ReadMe.txt.info 2014-07-30 15:30:47 +0000 differ
483=== added file 'src/Amiga/icons/smtube.info'
484Binary files src/Amiga/icons/smtube.info 1970-01-01 00:00:00 +0000 and src/Amiga/icons/smtube.info 2014-07-30 15:30:47 +0000 differ
485=== added file 'src/Amiga/icons/smtube_Drawer.info'
486Binary files src/Amiga/icons/smtube_Drawer.info 1970-01-01 00:00:00 +0000 and src/Amiga/icons/smtube_Drawer.info 2014-07-30 15:30:47 +0000 differ
487=== added file 'src/Amiga/icons/translations.info'
488Binary files src/Amiga/icons/translations.info 1970-01-01 00:00:00 +0000 and src/Amiga/icons/translations.info 2014-07-30 15:30:47 +0000 differ
489=== modified file 'src/about.cpp'
490--- src/about.cpp 2013-10-03 17:16:56 +0000
491+++ src/about.cpp 2014-07-30 15:30:47 +0000
492@@ -1,5 +1,5 @@
493 /* smtube, a small youtube browser.
494- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
495+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
496
497 This program is free software; you can redistribute it and/or modify
498 it under the terms of the GNU General Public License as published by
499@@ -31,7 +31,7 @@
500
501 info->setHtml(
502 "<b>"+ tr("YouTube%1 Browser for SMPlayer").arg(QChar(0x2122)) +"</b>"
503- "<p>&copy; 2012-2013 Ricardo Villalba &lt;rvm@users.sourceforge.net&gt;" +
504+ "<p>&copy; 2012-2014 Ricardo Villalba &lt;rvm@users.sourceforge.net&gt;" +
505 "<br>" + tr("Based on UMPlayer") + " &copy; 2010 Ori Rejwan"
506 "<p><b>" +
507 tr("Version: %1").arg(smtubeVersion()) + "</b>"
508@@ -89,35 +89,55 @@
509
510 QString About::getTranslators() {
511 return QString(
512- tr("The following people have contributed with translations:") +
513- "<p>" +
514- trad(tr("Spanish"), "Ricardo Villalba <rvm@users.sourceforge.net>") +
515- trad(tr("Russian"), QString::fromUtf8("Белый Владимир <wiselord1983@gmail.com>")) +
516- trad(tr("Lithuanian"), QString::fromUtf8("Algimantas Margevi�ius <margevicius.algimantas@gmail.com>")) +
517- trad(tr("Japanese"), "Nardog <alphisation@gmail.com>") +
518- trad(tr("Simplified-Chinese"), "OpenBDH <opensource@bendihua.org>") +
519- trad(tr("Basque"), "Xabier Aramendi <azpidatziak@gmail.com>") +
520- trad(tr("Portuguese"), QString::fromUtf8("Sérgio Marques <smarquespt@gmail.com>")) +
521- trad(tr("Hungarian"), "Gojko <m.gojko.71@gmail.com>") +
522- trad(tr("Polish"), "Adam <ad56@poczta.fm>") +
523- trad(tr("Galician"), QString::fromUtf8("Adrián Chaves Fernández <adriyetichaves@gmail.com>")) +
524- trad(tr("Greek"), "dglent") +
525- trad(tr("Hebrew"), "Genghis Khan <genghiskhan@gmx.ca>") +
526- trad(tr("Portuguese (Brazil)"), QString::fromUtf8("Maico Sertório <maico.sertorio@gmail.com>")) +
527- trad(tr("Ukrainian"), "zubr139 (transifex)") +
528- trad(tr("Norwegian Nynorsk"), "bjorni (transifex)") +
529- trad(tr("Czech"), QString::fromUtf8("Petr Šimá�ek (transifex)")) +
530- trad(tr("Malay"), "abuyop (transifex)") +
531- trad(tr("Swedish"), QStringList() << "XC (transifex)" << "Andreas Gustafsson (transifex)") +
532- trad(tr("Turkish"), QStringList() << "Emre FIRAT (transifex)" << QString::fromUtf8("Hasan Akgöz (transifex)")) +
533- trad(tr("Finnish"), QString::fromUtf8("Jiri Grönroos (transifex)")) +
534- trad(tr("Georgian"), "George Machitidze (transifex)") +
535- trad(tr("Serbian"), QStringList() << QString::fromUtf8("Mladen Pejaković (transifex)") << "miroslav (transifex)") +
536- trad(tr("Croatian"), "gogo (transifex)") +
537- trad(tr("Bulgarian"), "Ivailo Monev (transifex)") +
538- trad(tr("Vietnamese"), QStringList() << "Phan Anh (transifex)" << "Biz Over (transifex)" << "Thu Thao Nguyen Ngoc (transifex)") +
539- trad(tr("Indonesian"), "Mohamad Hasan Al Banna (transifex)") +
540- "");
541+ tr("Many people contributed with translations.") +" "+
542+ tr("You can also help to translate SMPlayer into your own language.") +"<p>"+
543+ tr("Visit %1 and join a translation team.").arg("<a href=\"http://www.transifex.com/projects/p/smplayer/\">http://www.transifex.com/projects/p/smplayer/</a>") +
544+ "<p>" +
545+ tr("Current translators from the transifex teams:") +
546+ "<p>" +
547+ trad(tr("Spanish"), "Ricardo Villalba") +
548+ trad(tr("Basque"), "Xabier Aramendi") +
549+ trad(tr("Croatian"), "Gogo") +
550+ trad(tr("Czech"), QStringList() << QString::fromUtf8("Petr Šimá�ek") << QString::fromUtf8("Jakub Kožíšek")) +
551+ trad(tr("Japanese"), QStringList() << "Ever_green" << "Nardog") +
552+ trad(tr("Korean"), QStringList() << "ParkJS" << "Potato") +
553+ trad(tr("Portuguese"), QStringList() << QString::fromUtf8("Sérgio Marques") << "Hugo Carvalho") +
554+ trad(tr("Serbian"), QStringList() << QString::fromUtf8("Mladen Pejaković") << "Miroslav" << "Rancher") +
555+ trad(tr("Ukrainian"), QStringList() << "Zubr139" << "evmir2") +
556+ trad(tr("Galician"), QStringList() << QString::fromUtf8("Adrián Chaves Fernández") << "Miguel Branco" << "antiparvos") +
557+ trad(tr("Lithuanian"), QString::fromUtf8("Algimantas Margevi�ius")) +
558+ trad(tr("Malay"), "Abuyop") +
559+ trad(tr("Portuguese - Brazil"), QStringList() << QString::fromUtf8("Maico Sertório") << "Vinicius" << "Ronnie Dilli" << QString::fromUtf8("Lucas Simões")) +
560+ trad(tr("Hebrew"), "GenghisKhan") +
561+ trad(tr("Simplified Chinese"), QStringList() << "OpenBDH" << "Zhangzheliuli" << "Zhnagmin" << "wwj402" << "775405984") +
562+ trad(tr("Vietnamese"), QStringList() << "Anh Phan" << "Biz Over" << "Thu Thao Nguyen Ngoc" << "Duy Truong Nguyen") +
563+ trad(tr("Polish"), QStringList() <<"Filux" << QString::fromUtf8("�ukasz Hryniuk") << QString::fromUtf8("Piotr Strębski") << QString::fromUtf8("Michał Trzebiatowski") << "Grzegorz Pruchniakowski") +
564+ trad(tr("Russian"), QStringList() << "WiseLord" << "Viktor" << "DmitryKX" << "Gleb Mekhrenin" << "ElFrio" << "Semen V. Dubina" << "Denis" << "angry_snake" << "Andrei Stepanov") +
565+ trad(tr("French"), QStringList() << "Olivier Devineau" << "Ybsar" << "Janmaro" << "Guillaume 'zzd10h' Boesel" << "tneskovic" << "Calinou") +
566+ trad(tr("Indonesian"), QStringList() << "Mohamad Hasan Al Banna" << "Aulia Firdaus Simbolon" << "Muhammad Fikri Hariri") +
567+ trad(tr("Danish"), "Michael Larsen") +
568+ trad(tr("Hungarian"), QStringList() << "Gojko" << QString::fromUtf8("Zsolt Péter Basák") << "chris020891") +
569+ trad(tr("Turkish"), QStringList() << "Emre Firat" << QString::fromUtf8("Hasan Akgöz") << QString::fromUtf8("�куп")) +
570+ trad(tr("Finnish"), QString::fromUtf8("Jiri Grönroos")) +
571+ trad(tr("German"), QStringList() << "Shaggy" << QString::fromUtf8("Michał Trzebiatowski") << "Eclipse" << "j5lx" << "Tobias Bannert") +
572+ trad(tr("Traditional Chinese"), QStringList() << "Taijuin Lee" << "Wpliao" << QString::fromUtf8("冥王�西里斯")) +
573+ trad(tr("Bulgarian"), QStringList() << "Ivailo Monev" << QString::fromUtf8("Радо�лав") << "Elusiv_man") +
574+ trad(tr("Norwegian Nynorsk"), QStringList() << "Bjorni" << "F_Sauce") +
575+ trad(tr("Swedish"), QStringList() << "XC" << "Andreas Gustafsson") +
576+ trad(tr("Arabic"), QStringList() << "Riyadh" << "Muhammad Fawwaz Orabi" << "Mohamed Sakhri") +
577+ trad(tr("Georgian"), "George Machitidze") +
578+ trad(tr("Arabic - Saudi Arabia"), "Mohamed") +
579+ trad(tr("Sinhala"), "Rathnayake") +
580+ trad(tr("Greek"), QString::fromUtf8("Γιάννης Ανθυμίδης")) +
581+ trad(tr("Estonian"), QString::fromUtf8("Olav Mägi")) +
582+ trad(tr("N'ko"), QStringList() << QString::fromUtf8("Kairaba Cissé") << "Youssouf Diaby" << "Lasnei Kante" << "Kante Soufiane") +
583+ trad(tr("Italian"), QStringList() << "Damtux" << "Samir Hawamdeh" << "Fabio Mazza") +
584+ trad(tr("Uzbek"), "Umid Almasov") +
585+ trad(tr("Catalan"), QStringList() << "Anna Fenoy" << "Jmontane") +
586+ trad(tr("Slovak"), QString::fromUtf8("Ján Ďanovský")) +
587+ trad(tr("British English"), "F_Sauce") +
588+ trad(tr("Albanian"), "rigels.gordani") +
589+ "");
590 }
591
592 QString About::trad(const QString & lang, const QString & author) {
593@@ -129,9 +149,10 @@
594 for (int n = 0; n < authors.count(); n++) {
595 QString author = authors[n];
596 s += author.replace("<", "&lt;").replace(">", "&gt;");
597- if (n < (authors.count()-1)) s += "<br>";
598+ if (n < (authors.count()-1)) s += ", ";
599 }
600- return QString("<h3>%1:</h3><h4>%2</h4><hr>").arg(lang).arg(s);
601+ //return QString("<h3>%1:</h3><h4>%2</h4><hr>").arg(lang).arg(s);
602+ return QString("<p><b>%1</b>: %2</p>").arg(lang).arg(s);
603 }
604
605 QString About::link(const QString & url, QString name) {
606
607=== modified file 'src/about.h'
608--- src/about.h 2013-04-13 00:30:34 +0000
609+++ src/about.h 2014-07-30 15:30:47 +0000
610@@ -1,5 +1,5 @@
611 /* smtube, a small youtube browser.
612- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
613+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
614
615 This program is free software; you can redistribute it and/or modify
616 it under the terms of the GNU General Public License as published by
617
618=== modified file 'src/codedownloader.cpp'
619--- src/codedownloader.cpp 2013-10-03 17:16:56 +0000
620+++ src/codedownloader.cpp 2014-07-30 15:30:47 +0000
621@@ -112,7 +112,9 @@
622 }
623
624 void CodeDownloader::updateDataReadProgress(qint64 bytes_read, qint64 total_bytes) {
625+#ifndef QT_NO_DEBUG_OUTPUT
626 qDebug() << "CodeDownloader::updateDataReadProgress: " << bytes_read << " " << total_bytes;
627+#endif
628 if (total_bytes > -1) {
629 setMaximum(total_bytes);
630 setValue(bytes_read);
631
632=== modified file 'src/codedownloader.h'
633--- src/codedownloader.h 2013-10-03 17:16:56 +0000
634+++ src/codedownloader.h 2014-07-30 15:30:47 +0000
635@@ -1,5 +1,5 @@
636 /* smplayer, GUI front-end for mplayer.
637- Copyright (C) 2006-2013 Ricardo Villalba <rvm@users.sourceforge.net>
638+ Copyright (C) 2006-2014 Ricardo Villalba <rvm@users.sourceforge.net>
639
640 This program is free software; you can redistribute it and/or modify
641 it under the terms of the GNU General Public License as published by
642
643=== modified file 'src/configdialog.cpp'
644--- src/configdialog.cpp 2013-10-03 17:16:56 +0000
645+++ src/configdialog.cpp 2014-07-30 15:30:47 +0000
646@@ -1,5 +1,5 @@
647 /* smtube, a small youtube browser.
648- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
649+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
650
651 This program is free software; you can redistribute it and/or modify
652 it under the terms of the GNU General Public License as published by
653@@ -19,56 +19,23 @@
654 #include "configdialog.h"
655 #include "ytdialog.h"
656 #include "retrieveyoutubeurl.h"
657+#include "regions.h"
658
659 ConfigDialog::ConfigDialog(QWidget * parent, Qt::WindowFlags f)
660 : QDialog(parent, f)
661 {
662 setupUi(this);
663-
664+
665 directory_edit->setDialogType(FileChooser::GetDirectory);
666 //layout()->setSizeConstraint(QLayout::SetFixedSize);
667
668- region_combo->addItem( tr("Argentina"), "AR");
669- region_combo->addItem( tr("Australia"), "AU");
670- //region_combo->addItem( tr("Austria"), "AT"); // Invalid code :?
671- region_combo->addItem( tr("Belgium"), "BE");
672- region_combo->addItem( tr("Brazil"), "BR");
673- region_combo->addItem( tr("Canada"), "CA");
674- region_combo->addItem( tr("Chile"), "CL");
675- region_combo->addItem( tr("Colombia"), "CO");
676- region_combo->addItem( tr("Czech Republic"), "CZ");
677- region_combo->addItem( tr("Egypt"), "EG");
678- region_combo->addItem( tr("France"), "FR");
679- region_combo->addItem( tr("Germany"), "DE");
680- region_combo->addItem( tr("Great Britain"), "GB");
681- region_combo->addItem( tr("Hong Kong"), "HK");
682- region_combo->addItem( tr("Hungary"), "HU");
683- region_combo->addItem( tr("India"), "IN");
684- region_combo->addItem( tr("Ireland"), "IE");
685- region_combo->addItem( tr("Israel"), "IL");
686- region_combo->addItem( tr("Italy"), "IT");
687- region_combo->addItem( tr("Japan"), "JP");
688-
689- region_combo->addItem( tr("Jordan"), "JO");
690- region_combo->addItem( tr("Malaysia"), "MY");
691- region_combo->addItem( tr("Mexico"), "MX");
692- region_combo->addItem( tr("Morocco"), "MA");
693- region_combo->addItem( tr("Netherlands"), "NL");
694- region_combo->addItem( tr("New Zealand"), "NZ");
695- region_combo->addItem( tr("Peru"), "PE");
696- region_combo->addItem( tr("Philippines"), "PH");
697- region_combo->addItem( tr("Poland"), "PL");
698- region_combo->addItem( tr("Russia"), "RU");
699- region_combo->addItem( tr("Saudi Arabia"), "SA");
700- region_combo->addItem( tr("Singapore"), "SG");
701- region_combo->addItem( tr("South Africa"), "ZA");
702- region_combo->addItem( tr("South Korea"), "KR");
703- region_combo->addItem( tr("Spain"), "ES");
704- region_combo->addItem( tr("Sweden"), "SE");
705- //region_combo->addItem( tr("Switzerland"), "CH"); // Invalid code :?
706- region_combo->addItem( tr("Taiwan"), "TW");
707- region_combo->addItem( tr("United Arab Emirates"), "AE");
708- region_combo->addItem( tr("United States"), "US");
709+ // Populate the region_combo combobox
710+ QMap<QString,QString> regions_list = Regions::list();
711+ QMapIterator<QString,QString> it(regions_list);
712+ while (it.hasNext()) {
713+ it.next();
714+ region_combo->addItem( it.value(), it.key() );
715+ }
716
717 time_combo->addItem( tr("All time"), "all_time");
718 time_combo->addItem( tr("This month"), "this_month");
719@@ -101,10 +68,16 @@
720 record_quality_combo->addItem( "1080p (webm)", RetrieveYoutubeUrl::WEBM_1080p );
721
722 #ifdef Q_OS_WIN
723- playback_group->hide();
724+ playback_group->hide();
725+#else
726+#ifndef USE_PLAYERS
727+ player_widget->hide();
728+#endif
729 #endif
730
731+#ifdef USE_PLAYERS
732 connect(player_combo, SIGNAL(currentIndexChanged(int)), this, SLOT(playerChanged(int)));
733+#endif
734
735 adjustSize();
736 }
737@@ -131,6 +104,7 @@
738 return record_quality_combo->itemData(index).toInt();
739 }
740
741+#ifdef USE_PLAYERS
742 void ConfigDialog::setPlayerNames(QStringList names)
743 {
744 player_combo->clear();
745@@ -158,6 +132,7 @@
746 playback_quality_label->setEnabled(true);
747 }
748 }
749+#endif
750
751 void ConfigDialog::setRegion(const QString & region) {
752 int i = region_combo->findData(region);
753
754=== modified file 'src/configdialog.h'
755--- src/configdialog.h 2013-10-03 17:16:56 +0000
756+++ src/configdialog.h 2014-07-30 15:30:47 +0000
757@@ -1,5 +1,5 @@
758 /* smtube, a small youtube browser.
759- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
760+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
761
762 This program is free software; you can redistribute it and/or modify
763 it under the terms of the GNU General Public License as published by
764@@ -35,8 +35,10 @@
765 void setRecordingDirectory( const QString & folder );
766 void setRecordingQuality( int quality );
767 void setPlaybackQuality( int quality );
768+#ifdef USE_PLAYERS
769 void setPlayerNames(QStringList names);
770 void setPlayer(QString name);
771+#endif
772 void setRegion(const QString & region);
773 void setPeriod(const QString & period);
774
775@@ -44,12 +46,16 @@
776 QString recordingDirectory();
777 int recordingQuality();
778 int playbackQuality();
779+#ifdef USE_PLAYERS
780 QString player();
781+#endif
782 QString region();
783 QString period();
784
785+#ifdef USE_PLAYERS
786 protected slots:
787 void playerChanged(int);
788+#endif
789 };
790
791 #endif
792
793=== modified file 'src/configdialog.ui'
794--- src/configdialog.ui 2013-10-03 17:16:56 +0000
795+++ src/configdialog.ui 2014-07-30 15:30:47 +0000
796@@ -13,13 +13,13 @@
797 <property name="windowTitle">
798 <string>Settings</string>
799 </property>
800- <layout class="QVBoxLayout" name="verticalLayout">
801+ <layout class="QVBoxLayout" name="verticalLayout_2">
802 <item>
803 <widget class="QGroupBox" name="recording_group">
804 <property name="title">
805 <string>Recording</string>
806 </property>
807- <layout class="QVBoxLayout" name="verticalLayout_2">
808+ <layout class="QVBoxLayout" name="verticalLayout_3">
809 <item>
810 <layout class="QHBoxLayout" name="horizontalLayout">
811 <item>
812@@ -79,7 +79,7 @@
813 <property name="title">
814 <string>Playback</string>
815 </property>
816- <layout class="QVBoxLayout" name="verticalLayout_3">
817+ <layout class="QVBoxLayout" name="verticalLayout">
818 <item>
819 <layout class="QHBoxLayout" name="horizontalLayout_2">
820 <item>
821@@ -111,34 +111,42 @@
822 </layout>
823 </item>
824 <item>
825- <layout class="QHBoxLayout" name="horizontalLayout_4">
826- <item>
827- <widget class="QLabel" name="label_2">
828- <property name="text">
829- <string>&amp;Player:</string>
830- </property>
831- <property name="buddy">
832- <cstring>player_combo</cstring>
833- </property>
834- </widget>
835- </item>
836- <item>
837- <widget class="QComboBox" name="player_combo"/>
838- </item>
839- <item>
840- <spacer name="horizontalSpacer">
841- <property name="orientation">
842- <enum>Qt::Horizontal</enum>
843- </property>
844- <property name="sizeHint" stdset="0">
845- <size>
846- <width>40</width>
847- <height>20</height>
848- </size>
849- </property>
850- </spacer>
851- </item>
852- </layout>
853+ <widget class="QWidget" name="player_widget" native="true">
854+ <layout class="QHBoxLayout" name="horizontalLayout_4">
855+ <property name="spacing">
856+ <number>0</number>
857+ </property>
858+ <property name="margin">
859+ <number>0</number>
860+ </property>
861+ <item>
862+ <widget class="QLabel" name="label_2">
863+ <property name="text">
864+ <string>&amp;Player:</string>
865+ </property>
866+ <property name="buddy">
867+ <cstring>player_combo</cstring>
868+ </property>
869+ </widget>
870+ </item>
871+ <item>
872+ <widget class="QComboBox" name="player_combo"/>
873+ </item>
874+ <item>
875+ <spacer name="horizontalSpacer">
876+ <property name="orientation">
877+ <enum>Qt::Horizontal</enum>
878+ </property>
879+ <property name="sizeHint" stdset="0">
880+ <size>
881+ <width>40</width>
882+ <height>20</height>
883+ </size>
884+ </property>
885+ </spacer>
886+ </item>
887+ </layout>
888+ </widget>
889 </item>
890 </layout>
891 </widget>
892
893=== modified file 'src/downloadfile.cpp'
894--- src/downloadfile.cpp 2013-04-13 00:30:34 +0000
895+++ src/downloadfile.cpp 2014-07-30 15:30:47 +0000
896@@ -1,5 +1,5 @@
897 /* smtube, a small youtube browser.
898- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
899+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
900 Copyright (C) 2010 Ori Rejwan
901
902 This program is free software; you can redistribute it and/or modify
903@@ -40,7 +40,7 @@
904
905 void DownloadFile::getRequest(QString url)
906 {
907- QUrl realUrl = QUrl::fromEncoded(url.toAscii(), QUrl::StrictMode);
908+ QUrl realUrl = QUrl::fromEncoded(url.toLatin1(), QUrl::StrictMode);
909 getRequest(realUrl);
910 }
911
912@@ -64,7 +64,9 @@
913 static unsigned int count = 0;
914 count++;
915
916- if (count % 50 == 0)
917+ #if QT_VERSION < 0x050000
918+ if (count % 50 == 0)
919+ #endif
920 {
921 totalSize = total;
922 completed = bytesReceived;
923@@ -207,10 +209,6 @@
924 file->close();
925 emit errorOcurred((int)error);
926 }
927- /*
928- else
929- qDebug() << "Hello Darling";
930- */
931 }
932
933 #include "moc_downloadfile.cpp"
934
935=== modified file 'src/downloadfile.h'
936--- src/downloadfile.h 2013-04-13 00:30:34 +0000
937+++ src/downloadfile.h 2014-07-30 15:30:47 +0000
938@@ -1,5 +1,5 @@
939 /* smtube, a small youtube browser.
940- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
941+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
942 Copyright (C) 2010 Ori Rejwan
943
944 This program is free software; you can redistribute it and/or modify
945
946=== modified file 'src/filechooser.cpp'
947--- src/filechooser.cpp 2013-04-13 00:30:34 +0000
948+++ src/filechooser.cpp 2014-07-30 15:30:47 +0000
949@@ -1,5 +1,5 @@
950 /* smtube, a small youtube browser.
951- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
952+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
953
954 This program is free software; you can redistribute it and/or modify
955 it under the terms of the GNU General Public License as published by
956
957=== modified file 'src/filechooser.h'
958--- src/filechooser.h 2013-04-13 00:30:34 +0000
959+++ src/filechooser.h 2014-07-30 15:30:47 +0000
960@@ -1,5 +1,5 @@
961 /* smtube, a small youtube browser.
962- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
963+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
964
965 This program is free software; you can redistribute it and/or modify
966 it under the terms of the GNU General Public License as published by
967
968=== added file 'src/fontpref.h'
969--- src/fontpref.h 1970-01-01 00:00:00 +0000
970+++ src/fontpref.h 2014-07-30 15:30:47 +0000
971@@ -0,0 +1,28 @@
972+/* smtube, a small youtube browser.
973+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
974+
975+ This program is free software; you can redistribute it and/or modify
976+ it under the terms of the GNU General Public License as published by
977+ the Free Software Foundation; either version 2 of the License, or
978+ (at your option) any later version.
979+
980+ This program is distributed in the hope that it will be useful,
981+ but WITHOUT ANY WARRANTY; without even the implied warranty of
982+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
983+ GNU General Public License for more details.
984+
985+ You should have received a copy of the GNU General Public License
986+ along with this program; if not, write to the Free Software
987+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
988+*/
989+
990+#ifndef FONTPREF_H
991+#define FONTPREF_H
992+
993+class FontPref
994+{
995+public:
996+ static int base_size;
997+};
998+
999+#endif
1000
1001=== added file 'src/hcplayer.h'
1002--- src/hcplayer.h 1970-01-01 00:00:00 +0000
1003+++ src/hcplayer.h 2014-07-30 15:30:47 +0000
1004@@ -0,0 +1,53 @@
1005+/* smtube, a small youtube browser.
1006+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1007+
1008+ This program is free software; you can redistribute it and/or modify
1009+ it under the terms of the GNU General Public License as published by
1010+ the Free Software Foundation; either version 2 of the License, or
1011+ (at your option) any later version.
1012+
1013+ This program is distributed in the hope that it will be useful,
1014+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1015+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1016+ GNU General Public License for more details.
1017+
1018+ You should have received a copy of the GNU General Public License
1019+ along with this program; if not, write to the Free Software
1020+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1021+*/
1022+
1023+#ifndef HCPLAYERS_H
1024+#define HCPLAYERS_H
1025+
1026+#ifdef Q_OS_WIN
1027+
1028+#define HCPLAYER_EXECUTABLE qApp->applicationDirPath() + "/smplayer.exe"
1029+#define HCPLAYER_DIRECTPLAY true
1030+#define HCPLAYER_TITLEOPTION QString::null
1031+
1032+#else
1033+
1034+#ifdef Q_OS_AMIGA //zzd10h
1035+
1036+#define HCPLAYER_EXECUTABLE "Amiga/PlayVideo.rexx"
1037+#define HCPLAYER_DIRECTPLAY false
1038+#define HCPLAYER_TITLEOPTION QString::null
1039+
1040+#else
1041+
1042+#define HCPLAYER_EXECUTABLE "smplayer"
1043+#define HCPLAYER_DIRECTPLAY true
1044+#define HCPLAYER_TITLEOPTION QString::null
1045+
1046+#endif
1047+
1048+/*
1049+#define HCPLAYER_EXECUTABLE "mplayer"
1050+#define HCPLAYER_DIRECTPLAY false
1051+#define HCPLAYER_TITLEOPTION "-title "
1052+*/
1053+
1054+#endif
1055+
1056+#endif // HCPLAYERS_H
1057+
1058
1059=== modified file 'src/icons.qrc'
1060--- src/icons.qrc 2013-04-13 00:30:34 +0000
1061+++ src/icons.qrc 2014-07-30 15:30:47 +0000
1062@@ -24,5 +24,17 @@
1063 <file>icons/previous.png</file>
1064 <file>icons/next.png</file>
1065 <file>icons/recordings.png</file>
1066+ <file>icons/stage01.png</file>
1067+ <file>icons/stage02.png</file>
1068+ <file>icons/stage03.png</file>
1069+ <file>icons/stage04.png</file>
1070+ <file>icons/stage05.png</file>
1071+ <file>icons/stage06.png</file>
1072+ <file>icons/stage07.png</file>
1073+ <file>icons/stage08.png</file>
1074+ <file>icons/stage09.png</file>
1075+ <file>icons/stage10.png</file>
1076+ <file>icons/stage11.png</file>
1077+ <file>icons/stage12.png</file>
1078 </qresource>
1079 </RCC>
1080
1081=== added file 'src/icons/stage01.png'
1082Binary files src/icons/stage01.png 1970-01-01 00:00:00 +0000 and src/icons/stage01.png 2014-07-30 15:30:47 +0000 differ
1083=== added file 'src/icons/stage02.png'
1084Binary files src/icons/stage02.png 1970-01-01 00:00:00 +0000 and src/icons/stage02.png 2014-07-30 15:30:47 +0000 differ
1085=== added file 'src/icons/stage03.png'
1086Binary files src/icons/stage03.png 1970-01-01 00:00:00 +0000 and src/icons/stage03.png 2014-07-30 15:30:47 +0000 differ
1087=== added file 'src/icons/stage04.png'
1088Binary files src/icons/stage04.png 1970-01-01 00:00:00 +0000 and src/icons/stage04.png 2014-07-30 15:30:47 +0000 differ
1089=== added file 'src/icons/stage05.png'
1090Binary files src/icons/stage05.png 1970-01-01 00:00:00 +0000 and src/icons/stage05.png 2014-07-30 15:30:47 +0000 differ
1091=== added file 'src/icons/stage06.png'
1092Binary files src/icons/stage06.png 1970-01-01 00:00:00 +0000 and src/icons/stage06.png 2014-07-30 15:30:47 +0000 differ
1093=== added file 'src/icons/stage07.png'
1094Binary files src/icons/stage07.png 1970-01-01 00:00:00 +0000 and src/icons/stage07.png 2014-07-30 15:30:47 +0000 differ
1095=== added file 'src/icons/stage08.png'
1096Binary files src/icons/stage08.png 1970-01-01 00:00:00 +0000 and src/icons/stage08.png 2014-07-30 15:30:47 +0000 differ
1097=== added file 'src/icons/stage09.png'
1098Binary files src/icons/stage09.png 1970-01-01 00:00:00 +0000 and src/icons/stage09.png 2014-07-30 15:30:47 +0000 differ
1099=== added file 'src/icons/stage10.png'
1100Binary files src/icons/stage10.png 1970-01-01 00:00:00 +0000 and src/icons/stage10.png 2014-07-30 15:30:47 +0000 differ
1101=== added file 'src/icons/stage11.png'
1102Binary files src/icons/stage11.png 1970-01-01 00:00:00 +0000 and src/icons/stage11.png 2014-07-30 15:30:47 +0000 differ
1103=== added file 'src/icons/stage12.png'
1104Binary files src/icons/stage12.png 1970-01-01 00:00:00 +0000 and src/icons/stage12.png 2014-07-30 15:30:47 +0000 differ
1105=== modified file 'src/lineedit_with_icon.cpp'
1106--- src/lineedit_with_icon.cpp 2013-04-13 00:30:34 +0000
1107+++ src/lineedit_with_icon.cpp 2014-07-30 15:30:47 +0000
1108@@ -1,5 +1,5 @@
1109 /* smtube, a small youtube browser.
1110- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
1111+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1112
1113 This program is free software; you can redistribute it and/or modify
1114 it under the terms of the GNU General Public License as published by
1115
1116=== modified file 'src/lineedit_with_icon.h'
1117--- src/lineedit_with_icon.h 2013-04-13 00:30:34 +0000
1118+++ src/lineedit_with_icon.h 2014-07-30 15:30:47 +0000
1119@@ -1,5 +1,5 @@
1120 /* smtube, a small youtube browser.
1121- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
1122+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1123
1124 This program is free software; you can redistribute it and/or modify
1125 it under the terms of the GNU General Public License as published by
1126
1127=== modified file 'src/main.cpp'
1128--- src/main.cpp 2013-10-03 17:16:56 +0000
1129+++ src/main.cpp 2014-07-30 15:30:47 +0000
1130@@ -1,5 +1,5 @@
1131 /* smtube, a small youtube browser.
1132- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
1133+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1134 Copyright (C) 2010 Ori Rejwan
1135
1136 This program is free software; you can redistribute it and/or modify
1137@@ -17,7 +17,12 @@
1138 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1139 */
1140
1141+#ifdef USE_SINGLE_APPLICATION
1142 #include "QtSingleApplication"
1143+#else
1144+#include <QApplication>
1145+#endif
1146+
1147 #include <QTranslator>
1148 #include <QLibraryInfo>
1149 #include <QSettings>
1150@@ -84,7 +89,11 @@
1151
1152 int main( int argc, char ** argv )
1153 {
1154+#ifdef USE_SINGLE_APPLICATION
1155 QtSingleApplication a("smtube", argc, argv);
1156+#else
1157+ QApplication a(argc, argv);
1158+#endif
1159 /* a.setWheelScrollLines(1); */
1160
1161 QString search_term;
1162@@ -103,6 +112,7 @@
1163 search_term = args[n];
1164 }
1165
1166+#ifdef USE_SINGLE_APPLICATION
1167 QString message;
1168 if (!search_term.isEmpty()) message = "search " + search_term;
1169 if (a.isRunning()) {
1170@@ -110,6 +120,7 @@
1171 qDebug("Another instance is running. Exiting.");
1172 return 0;
1173 }
1174+#endif
1175 a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
1176
1177 QString locale = QLocale::system().name();
1178@@ -133,17 +144,18 @@
1179 YTDialog * yt = new YTDialog(0, &settings);
1180
1181 #ifdef YT_USE_SCRIPT
1182- QString ytcode_name = "ytcode.script";
1183+ QString ytcode_name = "yt.js";
1184 QString ytcode_file = configPath() +"/"+ ytcode_name;
1185 if (QFile::exists(smplayerConfigPath())) ytcode_file = smplayerConfigPath() +"/"+ ytcode_name;
1186 qDebug("ytcode_file: %s", ytcode_file.toUtf8().constData());
1187 yt->setScriptFile(ytcode_file);
1188 #endif
1189
1190+#ifdef USE_SINGLE_APPLICATION
1191 QObject::connect(&a, SIGNAL(messageReceived(const QString&)),
1192 yt, SLOT(handleMessage(const QString&)));
1193-
1194 a.setActivationWindow(yt);
1195+#endif
1196
1197 if (!search_term.isEmpty()) {
1198 yt->setSearchTerm(search_term);
1199
1200=== modified file 'src/myborder.cpp'
1201--- src/myborder.cpp 2013-04-13 00:30:34 +0000
1202+++ src/myborder.cpp 2014-07-30 15:30:47 +0000
1203@@ -1,5 +1,5 @@
1204 /* smtube, a small youtube browser.
1205- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
1206+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1207 Copyright (C) 2010 Ori Rejwan
1208
1209 This program is free software; you can redistribute it and/or modify
1210
1211=== modified file 'src/myborder.h'
1212--- src/myborder.h 2013-04-13 00:30:34 +0000
1213+++ src/myborder.h 2014-07-30 15:30:47 +0000
1214@@ -1,5 +1,5 @@
1215 /* smtube, a small youtube browser.
1216- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
1217+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1218 Copyright (C) 2010 Ori Rejwan
1219
1220 This program is free software; you can redistribute it and/or modify
1221
1222=== modified file 'src/myicon.cpp'
1223--- src/myicon.cpp 2013-04-13 00:30:34 +0000
1224+++ src/myicon.cpp 2014-07-30 15:30:47 +0000
1225@@ -1,5 +1,5 @@
1226 /* smtube, a small youtube browser.
1227- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
1228+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1229 Copyright (C) 2010 Ori Rejwan
1230
1231 This program is free software; you can redistribute it and/or modify
1232
1233=== modified file 'src/myicon.h'
1234--- src/myicon.h 2013-04-13 00:30:34 +0000
1235+++ src/myicon.h 2014-07-30 15:30:47 +0000
1236@@ -1,5 +1,5 @@
1237 /* smtube, a small youtube browser.
1238- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
1239+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1240 Copyright (C) 2010 Ori Rejwan
1241
1242 This program is free software; you can redistribute it and/or modify
1243
1244=== modified file 'src/players.cpp'
1245--- src/players.cpp 2013-04-13 00:30:34 +0000
1246+++ src/players.cpp 2014-07-30 15:30:47 +0000
1247@@ -1,5 +1,5 @@
1248 /* smtube, a small youtube browser.
1249- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
1250+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1251
1252 This program is free software; you can redistribute it and/or modify
1253 it under the terms of the GNU General Public License as published by
1254@@ -20,6 +20,7 @@
1255 #include <QApplication>
1256 #include <QFile>
1257 #include <QFileInfo>
1258+#include <QDir>
1259
1260 QString Player::executable(bool * found) {
1261 if (found) *found = true;
1262@@ -33,13 +34,21 @@
1263 QFileInfo fi(bin);
1264 if (!fi.exists() || !fi.isExecutable() || fi.isDir()) {
1265 qDebug("Player::exec: command: '%s' is not a valid executable", bin.toUtf8().constData());
1266- bin = "/usr/bin/" + player_bin;
1267
1268+ bin = QDir::homePath() + "/bin/" + player_bin;
1269 fi.setFile(bin);
1270+
1271 if (!fi.exists() || !fi.isExecutable() || fi.isDir()) {
1272 qDebug("Player::exec: command: '%s' is not a valid executable", bin.toUtf8().constData());
1273- bin = player_bin;
1274- if (found) *found = false;
1275+
1276+ bin = "/usr/bin/" + player_bin;
1277+ fi.setFile(bin);
1278+
1279+ if (!fi.exists() || !fi.isExecutable() || fi.isDir()) {
1280+ qDebug("Player::exec: command: '%s' is not a valid executable", bin.toUtf8().constData());
1281+ bin = player_bin;
1282+ if (found) *found = false;
1283+ }
1284 }
1285 }
1286 #endif
1287@@ -54,6 +63,7 @@
1288 list.push_back( Player("Dragon Player", "dragon", false) );
1289 list.push_back( Player("Totem", "totem", false) );
1290 list.push_back( Player("GNOME-MPlayer", "gnome-mplayer", false) );
1291+ list.push_back( Player("mpv", "mpv", false, "--title=") );
1292
1293 curr = 0;
1294 }
1295@@ -74,5 +84,5 @@
1296 for (int n = 0; n < list.count(); n++) {
1297 if (list[n].name() == name) return n;
1298 }
1299- return 0;
1300+ return -1;
1301 }
1302
1303=== modified file 'src/players.h'
1304--- src/players.h 2013-04-13 00:30:34 +0000
1305+++ src/players.h 2014-07-30 15:30:47 +0000
1306@@ -1,5 +1,5 @@
1307 /* smtube, a small youtube browser.
1308- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
1309+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1310
1311 This program is free software; you can redistribute it and/or modify
1312 it under the terms of the GNU General Public License as published by
1313
1314=== modified file 'src/qtsingleapplication/qtlocalpeer.cpp'
1315--- src/qtsingleapplication/qtlocalpeer.cpp 2013-02-13 11:48:44 +0000
1316+++ src/qtsingleapplication/qtlocalpeer.cpp 2014-07-30 15:30:47 +0000
1317@@ -1,12 +1,11 @@
1318 /****************************************************************************
1319 **
1320-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
1321-** All rights reserved.
1322-**
1323-** Contact: Nokia Corporation (qt-info@nokia.com)
1324-**
1325-** This file is part of a Qt Solutions component.
1326-**
1327+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
1328+** Contact: http://www.qt-project.org/legal
1329+**
1330+** This file is part of the Qt Solutions component.
1331+**
1332+** $QT_BEGIN_LICENSE:BSD$
1333 ** You may use this file under the terms of the BSD license as follows:
1334 **
1335 ** "Redistribution and use in source and binary forms, with or without
1336@@ -18,10 +17,10 @@
1337 ** notice, this list of conditions and the following disclaimer in
1338 ** the documentation and/or other materials provided with the
1339 ** distribution.
1340-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
1341-** the names of its contributors may be used to endorse or promote
1342-** products derived from this software without specific prior written
1343-** permission.
1344+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1345+** of its contributors may be used to endorse or promote products derived
1346+** from this software without specific prior written permission.
1347+**
1348 **
1349 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1350 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1351@@ -35,20 +34,23 @@
1352 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1353 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1354 **
1355+** $QT_END_LICENSE$
1356+**
1357 ****************************************************************************/
1358
1359
1360 #include "qtlocalpeer.h"
1361-#include <QtCore/QCoreApplication>
1362-#include <QtCore/QTime>
1363+#include <QCoreApplication>
1364+#include <QTime>
1365
1366 #if defined(Q_OS_WIN)
1367-#include <QtCore/QLibrary>
1368-#include <QtCore/qt_windows.h>
1369+#include <QLibrary>
1370+#include <qt_windows.h>
1371 typedef BOOL(WINAPI*PProcessIdToSessionId)(DWORD,DWORD*);
1372 static PProcessIdToSessionId pProcessIdToSessionId = 0;
1373 #endif
1374 #if defined(Q_OS_UNIX)
1375+#include <sys/types.h>
1376 #include <time.h>
1377 #include <unistd.h>
1378 #endif
1379@@ -195,6 +197,7 @@
1380 QString message(QString::fromUtf8(uMsg));
1381 socket->write(ack, qstrlen(ack));
1382 socket->waitForBytesWritten(1000);
1383+ socket->waitForDisconnected(1000); // make sure client reads ack
1384 delete socket;
1385 emit messageReceived(message); //### (might take a long time to return)
1386 }
1387
1388=== modified file 'src/qtsingleapplication/qtlocalpeer.h'
1389--- src/qtsingleapplication/qtlocalpeer.h 2013-02-13 11:48:44 +0000
1390+++ src/qtsingleapplication/qtlocalpeer.h 2014-07-30 15:30:47 +0000
1391@@ -1,12 +1,11 @@
1392 /****************************************************************************
1393 **
1394-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
1395-** All rights reserved.
1396-**
1397-** Contact: Nokia Corporation (qt-info@nokia.com)
1398-**
1399-** This file is part of a Qt Solutions component.
1400-**
1401+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
1402+** Contact: http://www.qt-project.org/legal
1403+**
1404+** This file is part of the Qt Solutions component.
1405+**
1406+** $QT_BEGIN_LICENSE:BSD$
1407 ** You may use this file under the terms of the BSD license as follows:
1408 **
1409 ** "Redistribution and use in source and binary forms, with or without
1410@@ -18,10 +17,10 @@
1411 ** notice, this list of conditions and the following disclaimer in
1412 ** the documentation and/or other materials provided with the
1413 ** distribution.
1414-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
1415-** the names of its contributors may be used to endorse or promote
1416-** products derived from this software without specific prior written
1417-** permission.
1418+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1419+** of its contributors may be used to endorse or promote products derived
1420+** from this software without specific prior written permission.
1421+**
1422 **
1423 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1424 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1425@@ -35,14 +34,16 @@
1426 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1427 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1428 **
1429+** $QT_END_LICENSE$
1430+**
1431 ****************************************************************************/
1432
1433 #ifndef QTLOCALPEER_H
1434 #define QTLOCALPEER_H
1435
1436-#include <QtNetwork/QLocalServer>
1437-#include <QtNetwork/QLocalSocket>
1438-#include <QtCore/QDir>
1439+#include <QLocalServer>
1440+#include <QLocalSocket>
1441+#include <QDir>
1442
1443 #include "qtlockedfile.h"
1444
1445
1446=== modified file 'src/qtsingleapplication/qtlockedfile.cpp'
1447--- src/qtsingleapplication/qtlockedfile.cpp 2013-02-13 11:48:44 +0000
1448+++ src/qtsingleapplication/qtlockedfile.cpp 2014-07-30 15:30:47 +0000
1449@@ -1,12 +1,11 @@
1450 /****************************************************************************
1451 **
1452-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
1453-** All rights reserved.
1454-**
1455-** Contact: Nokia Corporation (qt-info@nokia.com)
1456-**
1457-** This file is part of a Qt Solutions component.
1458-**
1459+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
1460+** Contact: http://www.qt-project.org/legal
1461+**
1462+** This file is part of the Qt Solutions component.
1463+**
1464+** $QT_BEGIN_LICENSE:BSD$
1465 ** You may use this file under the terms of the BSD license as follows:
1466 **
1467 ** "Redistribution and use in source and binary forms, with or without
1468@@ -18,10 +17,10 @@
1469 ** notice, this list of conditions and the following disclaimer in
1470 ** the documentation and/or other materials provided with the
1471 ** distribution.
1472-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
1473-** the names of its contributors may be used to endorse or promote
1474-** products derived from this software without specific prior written
1475-** permission.
1476+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1477+** of its contributors may be used to endorse or promote products derived
1478+** from this software without specific prior written permission.
1479+**
1480 **
1481 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1482 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1483@@ -35,6 +34,8 @@
1484 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1485 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1486 **
1487+** $QT_END_LICENSE$
1488+**
1489 ****************************************************************************/
1490
1491 #include "qtlockedfile.h"
1492
1493=== modified file 'src/qtsingleapplication/qtlockedfile.h'
1494--- src/qtsingleapplication/qtlockedfile.h 2013-02-13 11:48:44 +0000
1495+++ src/qtsingleapplication/qtlockedfile.h 2014-07-30 15:30:47 +0000
1496@@ -1,12 +1,11 @@
1497 /****************************************************************************
1498 **
1499-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
1500-** All rights reserved.
1501-**
1502-** Contact: Nokia Corporation (qt-info@nokia.com)
1503-**
1504-** This file is part of a Qt Solutions component.
1505-**
1506+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
1507+** Contact: http://www.qt-project.org/legal
1508+**
1509+** This file is part of the Qt Solutions component.
1510+**
1511+** $QT_BEGIN_LICENSE:BSD$
1512 ** You may use this file under the terms of the BSD license as follows:
1513 **
1514 ** "Redistribution and use in source and binary forms, with or without
1515@@ -18,10 +17,10 @@
1516 ** notice, this list of conditions and the following disclaimer in
1517 ** the documentation and/or other materials provided with the
1518 ** distribution.
1519-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
1520-** the names of its contributors may be used to endorse or promote
1521-** products derived from this software without specific prior written
1522-** permission.
1523+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1524+** of its contributors may be used to endorse or promote products derived
1525+** from this software without specific prior written permission.
1526+**
1527 **
1528 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1529 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1530@@ -35,17 +34,19 @@
1531 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1532 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1533 **
1534+** $QT_END_LICENSE$
1535+**
1536 ****************************************************************************/
1537
1538 #ifndef QTLOCKEDFILE_H
1539 #define QTLOCKEDFILE_H
1540
1541-#include <QtCore/QFile>
1542+#include <QFile>
1543 #ifdef Q_OS_WIN
1544-#include <QtCore/QVector>
1545+#include <QVector>
1546 #endif
1547
1548-#if defined(Q_WS_WIN)
1549+#if defined(Q_OS_WIN)
1550 # if !defined(QT_QTLOCKEDFILE_EXPORT) && !defined(QT_QTLOCKEDFILE_IMPORT)
1551 # define QT_QTLOCKEDFILE_EXPORT
1552 # elif defined(QT_QTLOCKEDFILE_IMPORT)
1553
1554=== modified file 'src/qtsingleapplication/qtlockedfile_unix.cpp'
1555--- src/qtsingleapplication/qtlockedfile_unix.cpp 2013-02-13 11:48:44 +0000
1556+++ src/qtsingleapplication/qtlockedfile_unix.cpp 2014-07-30 15:30:47 +0000
1557@@ -1,12 +1,11 @@
1558 /****************************************************************************
1559 **
1560-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
1561-** All rights reserved.
1562-**
1563-** Contact: Nokia Corporation (qt-info@nokia.com)
1564-**
1565-** This file is part of a Qt Solutions component.
1566-**
1567+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
1568+** Contact: http://www.qt-project.org/legal
1569+**
1570+** This file is part of the Qt Solutions component.
1571+**
1572+** $QT_BEGIN_LICENSE:BSD$
1573 ** You may use this file under the terms of the BSD license as follows:
1574 **
1575 ** "Redistribution and use in source and binary forms, with or without
1576@@ -18,10 +17,10 @@
1577 ** notice, this list of conditions and the following disclaimer in
1578 ** the documentation and/or other materials provided with the
1579 ** distribution.
1580-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
1581-** the names of its contributors may be used to endorse or promote
1582-** products derived from this software without specific prior written
1583-** permission.
1584+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1585+** of its contributors may be used to endorse or promote products derived
1586+** from this software without specific prior written permission.
1587+**
1588 **
1589 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1590 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1591@@ -35,6 +34,8 @@
1592 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1593 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1594 **
1595+** $QT_END_LICENSE$
1596+**
1597 ****************************************************************************/
1598
1599 #include <string.h>
1600
1601=== modified file 'src/qtsingleapplication/qtlockedfile_win.cpp'
1602--- src/qtsingleapplication/qtlockedfile_win.cpp 2013-02-13 11:48:44 +0000
1603+++ src/qtsingleapplication/qtlockedfile_win.cpp 2014-07-30 15:30:47 +0000
1604@@ -1,12 +1,11 @@
1605 /****************************************************************************
1606 **
1607-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
1608-** All rights reserved.
1609-**
1610-** Contact: Nokia Corporation (qt-info@nokia.com)
1611-**
1612-** This file is part of a Qt Solutions component.
1613-**
1614+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
1615+** Contact: http://www.qt-project.org/legal
1616+**
1617+** This file is part of the Qt Solutions component.
1618+**
1619+** $QT_BEGIN_LICENSE:BSD$
1620 ** You may use this file under the terms of the BSD license as follows:
1621 **
1622 ** "Redistribution and use in source and binary forms, with or without
1623@@ -18,10 +17,10 @@
1624 ** notice, this list of conditions and the following disclaimer in
1625 ** the documentation and/or other materials provided with the
1626 ** distribution.
1627-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
1628-** the names of its contributors may be used to endorse or promote
1629-** products derived from this software without specific prior written
1630-** permission.
1631+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1632+** of its contributors may be used to endorse or promote products derived
1633+** from this software without specific prior written permission.
1634+**
1635 **
1636 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1637 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1638@@ -35,16 +34,22 @@
1639 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1640 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1641 **
1642+** $QT_END_LICENSE$
1643+**
1644 ****************************************************************************/
1645
1646 #include "qtlockedfile.h"
1647 #include <qt_windows.h>
1648-#include <QtCore/QFileInfo>
1649+#include <QFileInfo>
1650
1651 #define MUTEX_PREFIX "QtLockedFile mutex "
1652 // Maximum number of concurrent read locks. Must not be greater than MAXIMUM_WAIT_OBJECTS
1653 #define MAX_READERS MAXIMUM_WAIT_OBJECTS
1654
1655+#if QT_VERSION >= 0x050000
1656+#define QT_WA(unicode, ansi) unicode
1657+#endif
1658+
1659 Qt::HANDLE QtLockedFile::getMutexHandle(int idx, bool doCreate)
1660 {
1661 if (mutexname.isEmpty()) {
1662
1663=== modified file 'src/qtsingleapplication/qtsingleapplication.cpp'
1664--- src/qtsingleapplication/qtsingleapplication.cpp 2013-02-13 11:48:44 +0000
1665+++ src/qtsingleapplication/qtsingleapplication.cpp 2014-07-30 15:30:47 +0000
1666@@ -1,12 +1,11 @@
1667 /****************************************************************************
1668 **
1669-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
1670-** All rights reserved.
1671-**
1672-** Contact: Nokia Corporation (qt-info@nokia.com)
1673-**
1674-** This file is part of a Qt Solutions component.
1675-**
1676+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
1677+** Contact: http://www.qt-project.org/legal
1678+**
1679+** This file is part of the Qt Solutions component.
1680+**
1681+** $QT_BEGIN_LICENSE:BSD$
1682 ** You may use this file under the terms of the BSD license as follows:
1683 **
1684 ** "Redistribution and use in source and binary forms, with or without
1685@@ -18,10 +17,10 @@
1686 ** notice, this list of conditions and the following disclaimer in
1687 ** the documentation and/or other materials provided with the
1688 ** distribution.
1689-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
1690-** the names of its contributors may be used to endorse or promote
1691-** products derived from this software without specific prior written
1692-** permission.
1693+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1694+** of its contributors may be used to endorse or promote products derived
1695+** from this software without specific prior written permission.
1696+**
1697 **
1698 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1699 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1700@@ -35,12 +34,14 @@
1701 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1702 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1703 **
1704+** $QT_END_LICENSE$
1705+**
1706 ****************************************************************************/
1707
1708
1709 #include "qtsingleapplication.h"
1710 #include "qtlocalpeer.h"
1711-#include <QtGui/QWidget>
1712+#include <QWidget>
1713
1714
1715 /*!
1716@@ -169,6 +170,7 @@
1717 sysInit(appId);
1718 }
1719
1720+#if QT_VERSION < 0x050000
1721
1722 /*!
1723 Creates a QtSingleApplication object. The application identifier
1724@@ -182,7 +184,7 @@
1725 }
1726
1727
1728-#if defined(Q_WS_X11)
1729+# if defined(Q_WS_X11)
1730 /*!
1731 Special constructor for X11, ref. the documentation of
1732 QApplication's corresponding constructor. The application identifier
1733@@ -220,7 +222,8 @@
1734 {
1735 sysInit(appId);
1736 }
1737-#endif
1738+# endif // Q_WS_X11
1739+#endif // QT_VERSION < 0x050000
1740
1741
1742 /*!
1743
1744=== modified file 'src/qtsingleapplication/qtsingleapplication.h'
1745--- src/qtsingleapplication/qtsingleapplication.h 2013-02-13 11:48:44 +0000
1746+++ src/qtsingleapplication/qtsingleapplication.h 2014-07-30 15:30:47 +0000
1747@@ -1,12 +1,11 @@
1748 /****************************************************************************
1749 **
1750-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
1751-** All rights reserved.
1752-**
1753-** Contact: Nokia Corporation (qt-info@nokia.com)
1754-**
1755-** This file is part of a Qt Solutions component.
1756-**
1757+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
1758+** Contact: http://www.qt-project.org/legal
1759+**
1760+** This file is part of the Qt Solutions component.
1761+**
1762+** $QT_BEGIN_LICENSE:BSD$
1763 ** You may use this file under the terms of the BSD license as follows:
1764 **
1765 ** "Redistribution and use in source and binary forms, with or without
1766@@ -18,10 +17,10 @@
1767 ** notice, this list of conditions and the following disclaimer in
1768 ** the documentation and/or other materials provided with the
1769 ** distribution.
1770-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
1771-** the names of its contributors may be used to endorse or promote
1772-** products derived from this software without specific prior written
1773-** permission.
1774+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1775+** of its contributors may be used to endorse or promote products derived
1776+** from this software without specific prior written permission.
1777+**
1778 **
1779 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1780 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1781@@ -35,16 +34,18 @@
1782 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1783 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1784 **
1785+** $QT_END_LICENSE$
1786+**
1787 ****************************************************************************/
1788
1789 #ifndef QTSINGLEAPPLICATION_H
1790 #define QTSINGLEAPPLICATION_H
1791
1792-#include <QtGui/QApplication>
1793+#include <QApplication>
1794
1795 class QtLocalPeer;
1796
1797-#if defined(Q_WS_WIN)
1798+#if defined(Q_OS_WIN)
1799 # if !defined(QT_QTSINGLEAPPLICATION_EXPORT) && !defined(QT_QTSINGLEAPPLICATION_IMPORT)
1800 # define QT_QTSINGLEAPPLICATION_EXPORT
1801 # elif defined(QT_QTSINGLEAPPLICATION_IMPORT)
1802@@ -67,12 +68,14 @@
1803 public:
1804 QtSingleApplication(int &argc, char **argv, bool GUIenabled = true);
1805 QtSingleApplication(const QString &id, int &argc, char **argv);
1806+#if QT_VERSION < 0x050000
1807 QtSingleApplication(int &argc, char **argv, Type type);
1808-#if defined(Q_WS_X11)
1809+# if defined(Q_WS_X11)
1810 QtSingleApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0);
1811 QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0);
1812 QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0);
1813-#endif
1814+# endif // Q_WS_X11
1815+#endif // QT_VERSION < 0x050000
1816
1817 bool isRunning();
1818 QString id() const;
1819
1820=== modified file 'src/qtsingleapplication/qtsingleapplication.pri'
1821--- src/qtsingleapplication/qtsingleapplication.pri 2013-02-13 11:48:44 +0000
1822+++ src/qtsingleapplication/qtsingleapplication.pri 2014-07-30 15:30:47 +0000
1823@@ -2,6 +2,7 @@
1824 INCLUDEPATH += $$PWD
1825 DEPENDPATH += $$PWD
1826 QT *= network
1827+greaterThan(QT_MAJOR_VERSION, 4): QT *= widgets
1828
1829 qtsingleapplication-uselib:!qtsingleapplication-buildlib {
1830 LIBS += -L$$QTSINGLEAPPLICATION_LIBDIR -l$$QTSINGLEAPPLICATION_LIBNAME
1831
1832=== modified file 'src/qtsingleapplication/qtsinglecoreapplication.cpp'
1833--- src/qtsingleapplication/qtsinglecoreapplication.cpp 2013-02-13 11:48:44 +0000
1834+++ src/qtsingleapplication/qtsinglecoreapplication.cpp 2014-07-30 15:30:47 +0000
1835@@ -1,12 +1,11 @@
1836 /****************************************************************************
1837 **
1838-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
1839-** All rights reserved.
1840-**
1841-** Contact: Nokia Corporation (qt-info@nokia.com)
1842-**
1843-** This file is part of a Qt Solutions component.
1844-**
1845+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
1846+** Contact: http://www.qt-project.org/legal
1847+**
1848+** This file is part of the Qt Solutions component.
1849+**
1850+** $QT_BEGIN_LICENSE:BSD$
1851 ** You may use this file under the terms of the BSD license as follows:
1852 **
1853 ** "Redistribution and use in source and binary forms, with or without
1854@@ -18,10 +17,10 @@
1855 ** notice, this list of conditions and the following disclaimer in
1856 ** the documentation and/or other materials provided with the
1857 ** distribution.
1858-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
1859-** the names of its contributors may be used to endorse or promote
1860-** products derived from this software without specific prior written
1861-** permission.
1862+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1863+** of its contributors may be used to endorse or promote products derived
1864+** from this software without specific prior written permission.
1865+**
1866 **
1867 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1868 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1869@@ -35,6 +34,8 @@
1870 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1871 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1872 **
1873+** $QT_END_LICENSE$
1874+**
1875 ****************************************************************************/
1876
1877
1878
1879=== modified file 'src/qtsingleapplication/qtsinglecoreapplication.h'
1880--- src/qtsingleapplication/qtsinglecoreapplication.h 2013-02-13 11:48:44 +0000
1881+++ src/qtsingleapplication/qtsinglecoreapplication.h 2014-07-30 15:30:47 +0000
1882@@ -1,12 +1,11 @@
1883 /****************************************************************************
1884 **
1885-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
1886-** All rights reserved.
1887-**
1888-** Contact: Nokia Corporation (qt-info@nokia.com)
1889-**
1890-** This file is part of a Qt Solutions component.
1891-**
1892+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
1893+** Contact: http://www.qt-project.org/legal
1894+**
1895+** This file is part of the Qt Solutions component.
1896+**
1897+** $QT_BEGIN_LICENSE:BSD$
1898 ** You may use this file under the terms of the BSD license as follows:
1899 **
1900 ** "Redistribution and use in source and binary forms, with or without
1901@@ -18,10 +17,10 @@
1902 ** notice, this list of conditions and the following disclaimer in
1903 ** the documentation and/or other materials provided with the
1904 ** distribution.
1905-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
1906-** the names of its contributors may be used to endorse or promote
1907-** products derived from this software without specific prior written
1908-** permission.
1909+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1910+** of its contributors may be used to endorse or promote products derived
1911+** from this software without specific prior written permission.
1912+**
1913 **
1914 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1915 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1916@@ -35,12 +34,14 @@
1917 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1918 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1919 **
1920+** $QT_END_LICENSE$
1921+**
1922 ****************************************************************************/
1923
1924 #ifndef QTSINGLECOREAPPLICATION_H
1925 #define QTSINGLECOREAPPLICATION_H
1926
1927-#include <QtCore/QCoreApplication>
1928+#include <QCoreApplication>
1929
1930 class QtLocalPeer;
1931
1932
1933=== modified file 'src/recordingdialog.cpp'
1934--- src/recordingdialog.cpp 2013-10-03 17:16:56 +0000
1935+++ src/recordingdialog.cpp 2014-07-30 15:30:47 +0000
1936@@ -1,5 +1,5 @@
1937 /* smtube, a small youtube browser.
1938- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
1939+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
1940 Copyright (C) 2010 Ori Rejwan
1941
1942 This program is free software; you can redistribute it and/or modify
1943@@ -44,6 +44,10 @@
1944 /* #include "helper.h" */
1945 #include "myborder.h"
1946
1947+#ifdef Q_WS_AMIGA // zzd10h
1948+#include <QProcess>
1949+#endif
1950+
1951 RecordingDelegate::RecordingDelegate(QObject *parent)
1952 :QStyledItemDelegate(parent), selectedBrush(QPixmap(":/Control/bg-download-active.png"))
1953 {
1954@@ -52,7 +56,7 @@
1955 QPixmap retryPix(":/Control/bt-download-retry.png");
1956 playIcon = getIcon(playPix);
1957 cancelIcon = getIcon(cancelPix);
1958- retryIcon = getIcon(retryPix);
1959+ retryIcon = getIcon(retryPix);
1960 }
1961
1962 void RecordingDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
1963@@ -101,7 +105,7 @@
1964 painter->drawText(QRect(13, optionProgress.rect.bottom() + 3, rect.width(), rect.height()), Qt::AlignLeft | Qt::AlignTop, dd->downloadProgress);
1965 }
1966 else if(dd->downloadState == DownloadData::Canceled || dd->downloadState == DownloadData::Error)
1967- {
1968+ {
1969 QDateTime time = dd->completionTime;
1970 QString currentDateString;
1971 if(time.date() == QDate::currentDate())
1972@@ -118,7 +122,7 @@
1973 headerTextRect.height()), Qt::AlignVCenter | Qt::AlignRight, currentDateString );
1974 painter->drawText(QRect(headerTextRect.left(), headerTextRect.bottom() + 5, rect.width(), rect.height()),
1975 Qt::AlignLeft | Qt::AlignTop, dd->downloadState == DownloadData::Canceled ? tr("Canceled") : tr("Error"));
1976- currentPix = retryIcon.pixmap(dd->buttonState, MyIcon::Off );
1977+ currentPix = retryIcon.pixmap(dd->retry_possible ? dd->buttonState : MyIcon::Disabled, MyIcon::Off );
1978 QRect buttonRect(rect.width() - 13 - currentPix.width(), headerTextRect.bottom() + 5, currentPix.width(), currentPix.height());
1979 if(dd->buttonRect != buttonRect) dd->buttonRect = buttonRect;
1980 painter->drawPixmap(buttonRect, currentPix);
1981@@ -182,7 +186,7 @@
1982 return icon;
1983 }
1984
1985-QSize RecordingDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
1986+QSize RecordingDelegate::sizeHint(const QStyleOptionViewItem & /*option*/, const QModelIndex &index) const
1987 {
1988 DownloadData* dd = index.data(RecordingDialog::DownloadDataRole).value<DownloadData*>();
1989 if(dd->downloadState == DownloadData::Progressing)
1990@@ -252,24 +256,94 @@
1991 RetrieveVideoUrl* rvu = new RetrieveVideoUrl(this);
1992 rvu->setPreferredQuality((RetrieveYoutubeUrl::Quality) recording_quality);
1993 connect(rvu, SIGNAL(signatureNotFound(const QString &)), this, SIGNAL(signatureNotFound(const QString &)));
1994- connect(rvu, SIGNAL(gotPreferredUrl(const QString &, QString, QString)), this, SLOT(recordVideo(const QString &,QString,QString)));
1995- connect(rvu, SIGNAL(gotPreferredUrl(const QString &, QString, QString)), rvu, SLOT(deleteLater()));
1996- rvu->fetchYTVideoPage(videoId, title);
1997-
1998- if(!isVisible()) show();
1999-}
2000-
2001-void RecordingDialog::recordVideo(const QString & url, QString title, QString id)
2002-{
2003- if(url.isNull())
2004- {
2005- QMessageBox::warning(0, tr("Recording failed"), tr("There was an error in retrieving the download URL."));
2006- return;
2007- }
2008- download(url, title, id, 0);
2009-}
2010-
2011-void RecordingDialog::download(QString url, QString title, QString id, double duration)
2012+ connect(rvu, SIGNAL(gotUrls(const QMap<int, QString>&, QString, QString)), this, SLOT(recordVideo(const QMap<int, QString>&, QString, QString)));
2013+ connect(rvu, SIGNAL(gotUrls(const QMap<int, QString>&, QString, QString)), rvu, SLOT(deleteLater()));
2014+ rvu->fetchYTVideoPage(videoId, title);
2015+
2016+ if(!isVisible()) show();
2017+}
2018+
2019+void RecordingDialog::downloadAudioId(QString videoId, QString title, double) {
2020+ qDebug("RecordingDialog::downloadAudioId");
2021+
2022+ RetrieveVideoUrl* rvu = new RetrieveVideoUrl(this);
2023+ rvu->setPreferredQuality((RetrieveYoutubeUrl::Quality) recording_quality);
2024+ connect(rvu, SIGNAL(signatureNotFound(const QString &)), this, SIGNAL(signatureNotFound(const QString &)));
2025+ connect(rvu, SIGNAL(gotUrls(const QMap<int, QString>&, QString, QString)), this, SLOT(recordAudio(const QMap<int, QString>&, QString, QString)));
2026+ connect(rvu, SIGNAL(gotUrls(const QMap<int, QString>&, QString, QString)), rvu, SLOT(deleteLater()));
2027+ rvu->fetchYTVideoPage(videoId, title);
2028+
2029+ if(!isVisible()) show();
2030+}
2031+
2032+void RecordingDialog::recordVideo(const QMap<int, QString>& map, QString title, QString id) {
2033+ qDebug("RecordingDialog::recordVideo");
2034+
2035+ if (recording_quality == RetrieveYoutubeUrl::MP4_1080p || recording_quality == RetrieveYoutubeUrl::WEBM_1080p) {
2036+ if (!map.contains(RetrieveYoutubeUrl::MP4_1080p) && !map.contains(RetrieveYoutubeUrl::WEBM_1080p)) {
2037+ qDebug("RecordingDialog::recordVideo: 1080p not found in normal format");
2038+ // Check if there's a 1080p in DASH format
2039+ QString video_url = map.value(RetrieveYoutubeUrl::DASH_VIDEO_1080p, QString());
2040+ QString audio_url = RetrieveYoutubeUrl::findBestAudio(map);
2041+ if (!video_url.isEmpty() && !audio_url.isEmpty()) {
2042+ video_url += "&ratebypass=yes";
2043+ audio_url += "&ratebypass=yes";
2044+
2045+ //qDebug("RecordingDialog::recordVideo: video_url: %s", video_url.toLatin1().constData());
2046+ //qDebug("RecordingDialog::recordVideo: audio_url: %s", audio_url.toLatin1().constData());
2047+
2048+ qDebug("RecordingDialog::recordVideo: video and audio for 1080p DASH format found");
2049+ QString video_name = getUniqueFileName(title +".mp4");
2050+ qDebug("RecordingDialog::recordVideo: video name '%s'", video_name.toUtf8().constData());
2051+
2052+ QString audio_extension = ".m4a";
2053+ QRegExp rx("itag=(\\d+)");
2054+ if (rx.indexIn(audio_url) != -1) {
2055+ int itag = rx.cap(1).toInt();
2056+ //qDebug("itag: %d", itag);
2057+ if ((itag == RetrieveYoutubeUrl::DASH_AUDIO_WEBM_128) || (itag == RetrieveYoutubeUrl::DASH_AUDIO_WEBM_192)) {
2058+ audio_extension = ".webm";
2059+ }
2060+ }
2061+
2062+ QFileInfo fi(video_name);
2063+ QString audio_name = fi.absolutePath() +"/"+ fi.completeBaseName() + audio_extension;
2064+ qDebug("RecordingDialog::recordVideo: audio name '%s'", audio_name.toUtf8().constData());
2065+
2066+ if (QFile::exists(audio_name)) {
2067+ qDebug("RecordingDialog::recordVideo: the audio file already exists. Skipping.");
2068+ } else {
2069+ download(audio_url, title, id, 0, audio_name, false);
2070+ }
2071+ download(video_url, title, id, 0, video_name, false);
2072+ return;
2073+ }
2074+ }
2075+ }
2076+
2077+ QString url = RetrieveYoutubeUrl::findPreferredUrl(map, (RetrieveYoutubeUrl::Quality) recording_quality);
2078+ if (url.isEmpty()) {
2079+ QMessageBox::warning(0, tr("Recording failed"), tr("There was an error in retrieving the download URL."));
2080+ return;
2081+ }
2082+ download(url, title, id, 0);
2083+}
2084+
2085+void RecordingDialog::recordAudio(const QMap<int, QString>& map, QString title, QString id) {
2086+ qDebug("RecordingDialog::recordAudio");
2087+
2088+ QString url = RetrieveYoutubeUrl::findBestAudio(map);
2089+ url += "&ratebypass=yes";
2090+
2091+ if (url.isEmpty()) {
2092+ QMessageBox::warning(0, tr("Recording failed"), tr("There was an error in retrieving the download URL."));
2093+ return;
2094+ }
2095+
2096+ download(url, title, id, 0, QString::null, false);
2097+}
2098+
2099+void RecordingDialog::download(QString url, QString title, QString id, double duration, const QString & saveas, bool retry_possible)
2100 {
2101 QUrl qurl(url);
2102 QListWidgetItem* item = new QListWidgetItem(0, QListWidgetItem::UserType + 1);
2103@@ -298,20 +372,35 @@
2104 case RetrieveYoutubeUrl::WEBM_1080p:
2105 ext = ".webm";
2106 break;
2107- }
2108-
2109- QFile* file = new QFile(getUniqueFileName(title + ext));
2110+ case RetrieveYoutubeUrl::DASH_AUDIO_MP4_48:
2111+ case RetrieveYoutubeUrl::DASH_AUDIO_MP4_128:
2112+ case RetrieveYoutubeUrl::DASH_AUDIO_MP4_256:
2113+ ext = ".m4a";
2114+ break;
2115+ case RetrieveYoutubeUrl::DASH_AUDIO_WEBM_128:
2116+ case RetrieveYoutubeUrl::DASH_AUDIO_WEBM_192:
2117+ ext = ".webm";
2118+ break;
2119+ }
2120+
2121+ QString output_filename = saveas;
2122+ if (output_filename.isEmpty()) {
2123+ output_filename = getUniqueFileName(title + ext);
2124+ }
2125+
2126+ QFile* file = new QFile(output_filename);
2127 dd->title = QFileInfo(*file).fileName();
2128 dd->filePath = QFileInfo(*file).absoluteFilePath();
2129 dd->videoDuration = (int)duration;
2130 dd->downloadProgress = tr("Starting");
2131 dd->completionTime = QDateTime::currentDateTime();
2132+ dd->retry_possible = retry_possible;
2133 item->setData(DownloadDataRole, QVariant::fromValue(dd));
2134 item->setData(emitDataChangedRole, true);
2135
2136 DownloadFile* dfile = new DownloadFile(url, file, this);
2137- file->setParent(dfile);
2138- itemDownloadMap[dfile] = item;
2139+ file->setParent(dfile);
2140+ itemDownloadMap[dfile] = item;
2141 connect(dfile, SIGNAL(downloadFinished(bool)), this, SLOT(oneDownloadFinished(bool)));
2142 connect(dfile, SIGNAL(downloadStatus(QString)), this, SLOT(oneDownloadProgressStatus(QString)));
2143 connect(dfile, SIGNAL(progress(int, qint64)), this, SLOT(oneDownloadProgress(int, qint64)));
2144@@ -432,7 +521,7 @@
2145 updateWindowTitle();
2146 }
2147
2148-void RecordingDialog::resizeEvent(QResizeEvent *r)
2149+void RecordingDialog::resizeEvent(QResizeEvent * /*r*/)
2150 {
2151 static_cast<RecordingDelegate*>(downloadList->itemDelegate())->setWidth( downloadList->viewport()->width());
2152 }
2153@@ -525,7 +614,9 @@
2154 }
2155 else if(dd->downloadState == DownloadData::Canceled || dd->downloadState == DownloadData::Error )
2156 {
2157- contextMenu.addAction(tr("&Retry"))->setData("retry");
2158+ QAction *retryAct = contextMenu.addAction(tr("&Retry"));
2159+ retryAct->setData("retry");
2160+ if (!dd->retry_possible) retryAct->setEnabled(false);
2161 contextMenu.addSeparator();
2162 contextMenu.addAction(tr("Remove from &list"))->setData("remove");
2163 QAction* action = contextMenu.exec(m->globalPos());
2164@@ -626,6 +717,9 @@
2165 void RecordingDialog::retryDownload(QListWidgetItem *item)
2166 {
2167 DownloadData* dd = item->data(DownloadDataRole).value<DownloadData*>();
2168+
2169+ if (!dd->retry_possible) return;
2170+
2171 dd->downloadState = DownloadData::Progressing;
2172 dd->downloadProgress = tr("Fetching URL...");
2173 dd->downloadProgressPercent = 0;
2174@@ -722,7 +816,7 @@
2175 ++i ;
2176 }
2177 else
2178- {
2179+ {
2180 delete model->index(i, 0).data(DownloadDataRole).value<DownloadData*>();
2181 model->removeRow(i);
2182 }
2183@@ -761,7 +855,15 @@
2184
2185 void RecordingDialog::openFolder()
2186 {
2187+ #ifdef Q_WS_AMIGA // zzd10h
2188+ QProcess *process;
2189+ QString programme = "Amiga/OpenWorkbench.rexx";
2190+ QStringList argument ;
2191+ argument << recordings_directory ;
2192+ process->startDetached(programme,argument);
2193+ #else
2194 QDesktopServices::openUrl(QUrl::fromLocalFile(recordings_directory));
2195+ #endif
2196 }
2197
2198 void RecordingDialog::saveList()
2199@@ -783,6 +885,7 @@
2200 ddMap["videoid"] = dd->videoId;
2201 ddMap["video_duration"] = dd->videoDuration;
2202 ddMap["title"] = dd->title;
2203+ ddMap["retry_possible"] = dd->retry_possible;
2204 }
2205 itemList.append(ddMap);
2206 }
2207@@ -817,6 +920,7 @@
2208 dd->videoDuration = ddMap.value("video_duration").toInt();
2209 dd->completionTime = ddMap.value("time").toDateTime();
2210 dd->fileSize = ddMap.value("size").toLongLong();
2211+ dd->retry_possible = ddMap.value("retry_possible").toBool();
2212 item->setData(DownloadDataRole, QVariant::fromValue(dd));
2213 item->setData(emitDataChangedRole, true);
2214 }
2215
2216=== modified file 'src/recordingdialog.h'
2217--- src/recordingdialog.h 2013-10-03 17:16:56 +0000
2218+++ src/recordingdialog.h 2014-07-30 15:30:47 +0000
2219@@ -1,5 +1,5 @@
2220 /* smtube, a small youtube browser.
2221- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
2222+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
2223 Copyright (C) 2010 Ori Rejwan
2224
2225 This program is free software; you can redistribute it and/or modify
2226@@ -64,8 +64,7 @@
2227 QString title;
2228 QRect buttonRect;
2229 QString filePath;
2230-
2231-
2232+ bool retry_possible;
2233 };
2234
2235 Q_DECLARE_METATYPE(DownloadData*)
2236@@ -103,7 +102,8 @@
2237 ~RecordingDialog();
2238
2239 void downloadVideoId(QString videoId, QString title, double duration = 0);
2240- void download(QString url, QString title, QString id, double duration);
2241+ void downloadAudioId(QString videoId, QString title, double duration = 0);
2242+ void download(QString url, QString title, QString id, double duration, const QString & saveas = QString::null, bool retry_possible = true);
2243 QString getUniqueFileName(QString name);
2244 bool eventFilter(QObject *watched, QEvent *event);
2245
2246@@ -153,7 +153,8 @@
2247 void videoDoubleClicked(QListWidgetItem* item);
2248 void saveList();
2249 void loadList();
2250- void recordVideo(const QString & url, QString title, QString id);
2251+ void recordVideo(const QMap<int, QString>&, QString title, QString id);
2252+ void recordAudio(const QMap<int, QString>&, QString title, QString id);
2253
2254 protected:
2255 QString recordings_directory;
2256
2257=== added file 'src/regions.cpp'
2258--- src/regions.cpp 1970-01-01 00:00:00 +0000
2259+++ src/regions.cpp 2014-07-30 15:30:47 +0000
2260@@ -0,0 +1,87 @@
2261+/* smtube, a small youtube browser.
2262+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
2263+
2264+ This program is free software; you can redistribute it and/or modify
2265+ it under the terms of the GNU General Public License as published by
2266+ the Free Software Foundation; either version 2 of the License, or
2267+ (at your option) any later version.
2268+
2269+ This program is distributed in the hope that it will be useful,
2270+ but WITHOUT ANY WARRANTY; without even the implied warranty of
2271+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2272+ GNU General Public License for more details.
2273+
2274+ You should have received a copy of the GNU General Public License
2275+ along with this program; if not, write to the Free Software
2276+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2277+*/
2278+
2279+#include "regions.h"
2280+#include <QObject>
2281+#include <QLocale>
2282+
2283+QMap<QString,QString> Regions::list() {
2284+ QMap<QString,QString> l;
2285+
2286+ l["AR"] = tr("Argentina");
2287+ l["AU"] = tr("Australia");
2288+ // l["AT"] = tr("Austria"); // Invalid code :?
2289+ l["BE"] = tr("Belgium");
2290+ l["BR"] = tr("Brazil");
2291+ l["CA"] = tr("Canada");
2292+ l["CL"] = tr("Chile");
2293+ l["CO"] = tr("Colombia");
2294+ l["CZ"] = tr("Czech Republic");
2295+ l["EG"] = tr("Egypt");
2296+ l["FR"] = tr("France");
2297+ l["DE"] = tr("Germany");
2298+ l["GB"] = tr("Great Britain");
2299+ l["HK"] = tr("Hong Kong");
2300+ l["HU"] = tr("Hungary");
2301+ l["IN"] = tr("India");
2302+ l["IE"] = tr("Ireland");
2303+ l["IL"] = tr("Israel");
2304+ l["IT"] = tr("Italy");
2305+ l["JP"] = tr("Japan");
2306+ l["JO"] = tr("Jordan");
2307+ l["MY"] = tr("Malaysia");
2308+ l["MX"] = tr("Mexico");
2309+ l["MA"] = tr("Morocco");
2310+ l["NL"] = tr("Netherlands");
2311+ l["NZ"] = tr("New Zealand");
2312+ l["PE"] = tr("Peru");
2313+ l["PH"] = tr("Philippines");
2314+ l["PL"] = tr("Poland");
2315+ l["RU"] = tr("Russia");
2316+ l["SA"] = tr("Saudi Arabia");
2317+ l["SG"] = tr("Singapore");
2318+ l["ZA"] = tr("South Africa");
2319+ l["KR"] = tr("South Korea");
2320+ l["ES"] = tr("Spain");
2321+ l["SE"] = tr("Sweden");
2322+ //l["CH"] = tr("Switzerland"); // Invalid code :?
2323+ l["TW"] = tr("Taiwan");
2324+ l["AE"] = tr("United Arab Emirates");
2325+ l["US"] = tr("United States");
2326+
2327+ return l;
2328+}
2329+
2330+QString Regions::findRegionForLocale(const QLocale & locale) {
2331+ QMap <QString,QString> l = list();
2332+ QString r = "US"; // default
2333+
2334+ QString locale_name = locale.name();
2335+ qDebug("Regions::findRegionForLocale: locale_name: %s", locale_name.toUtf8().constData());
2336+
2337+ int pos = locale_name.indexOf("_");
2338+ if (pos > -1) {
2339+ QString country_code = locale_name.mid(pos+1);
2340+ qDebug("Regions::findRegionForLocale: country: %s", country_code.toUtf8().constData());
2341+ if (l.contains(country_code)) return country_code;
2342+ }
2343+
2344+ return r;
2345+}
2346+
2347+#include "moc_regions.cpp"
2348
2349=== added file 'src/regions.h'
2350--- src/regions.h 1970-01-01 00:00:00 +0000
2351+++ src/regions.h 2014-07-30 15:30:47 +0000
2352@@ -0,0 +1,38 @@
2353+/* smtube, a small youtube browser.
2354+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
2355+
2356+ This program is free software; you can redistribute it and/or modify
2357+ it under the terms of the GNU General Public License as published by
2358+ the Free Software Foundation; either version 2 of the License, or
2359+ (at your option) any later version.
2360+
2361+ This program is distributed in the hope that it will be useful,
2362+ but WITHOUT ANY WARRANTY; without even the implied warranty of
2363+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2364+ GNU General Public License for more details.
2365+
2366+ You should have received a copy of the GNU General Public License
2367+ along with this program; if not, write to the Free Software
2368+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2369+*/
2370+
2371+#ifndef REGIONS_H
2372+#define REGIONS_H
2373+
2374+#include <QObject>
2375+#include <QMap>
2376+#include <QString>
2377+
2378+class QLocale;
2379+
2380+class Regions : public QObject
2381+{
2382+ Q_OBJECT
2383+
2384+public:
2385+ static QMap<QString,QString> list();
2386+ static QString findRegionForLocale(const QLocale & locale);
2387+};
2388+
2389+#endif
2390+
2391
2392=== modified file 'src/retrieveyoutubeurl.cpp'
2393--- src/retrieveyoutubeurl.cpp 2013-10-03 17:16:56 +0000
2394+++ src/retrieveyoutubeurl.cpp 2014-07-30 15:30:47 +0000
2395@@ -1,5 +1,5 @@
2396 /* smplayer, GUI front-end for mplayer.
2397- Copyright (C) 2006-2013 Ricardo Villalba <rvm@users.sourceforge.net>
2398+ Copyright (C) 2006-2014 Ricardo Villalba <rvm@users.sourceforge.net>
2399 Copyright (C) 2010 Ori Rejwan
2400
2401 This program is free software; you can redistribute it and/or modify
2402@@ -24,33 +24,65 @@
2403 #include <QFile>
2404 #include "ytsig.h"
2405
2406+#if QT_VERSION >= 0x050000
2407+#include <QUrlQuery>
2408+#endif
2409+
2410+#define USE_PLAYER_NAME
2411+
2412+QString RetrieveYoutubeUrl::user_agent;
2413+
2414 RetrieveYoutubeUrl::RetrieveYoutubeUrl( QObject* parent ) : QObject(parent)
2415 {
2416 reply = 0;
2417 manager = new QNetworkAccessManager(this);
2418- connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(gotResponse(QNetworkReply*)));
2419
2420 preferred_quality = FLV_360p;
2421- user_agent = "Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20100101 Firefox/5.0.1";
2422 }
2423
2424 RetrieveYoutubeUrl::~RetrieveYoutubeUrl() {
2425 }
2426
2427 void RetrieveYoutubeUrl::fetchPage(const QString & url) {
2428+ QString agent = user_agent;
2429+ if (agent.isEmpty()) agent = "Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20100101 Firefox/5.0.1";
2430+ qDebug("RetrieveYoutubeUrl::fetchPage: user agent: %s", agent.toLatin1().constData());
2431+
2432+ QNetworkRequest req(url);
2433+ req.setRawHeader("User-Agent", agent.toLatin1());
2434+ reply = manager->get(req);
2435+ connect(reply, SIGNAL(finished()), this, SLOT(gotResponse()));
2436+ orig_url = url;
2437+
2438+ emit connecting(QUrl(url).host());
2439+
2440+#ifdef YT_GET_VIDEOINFO
2441+ video_id = getVideoID(url);
2442+#endif
2443+}
2444+
2445+#ifdef YT_GET_VIDEOINFO
2446+void RetrieveYoutubeUrl::fetchVideoInfoPage() {
2447+ QString url = QString("http://www.youtube.com/get_video_info?el=detailpage&ps=default&eurl=&gl=US&hl=en&video_id=%1").arg(video_id);
2448+ //qDebug("RetrieveYoutubeUrl::fetchVideoInfoPage: url: %s", url.toUtf8().constData());
2449+
2450+ YTSig::check(url);
2451 QNetworkRequest req(url);
2452 req.setRawHeader("User-Agent", user_agent.toLatin1());
2453 reply = manager->get(req);
2454- orig_url = url;
2455+ connect(reply, SIGNAL(finished()), this, SLOT(gotVideoInfoResponse()));
2456
2457- emit connecting(url);
2458+ emit connecting(QUrl(url).host());
2459 }
2460+#endif
2461
2462 void RetrieveYoutubeUrl::close() {
2463 if (reply) reply->abort();
2464 }
2465
2466-void RetrieveYoutubeUrl::gotResponse(QNetworkReply* reply) {
2467+void RetrieveYoutubeUrl::gotResponse() {
2468+ QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
2469+
2470 if (reply->error() == QNetworkReply::NoError) {
2471 int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
2472 qDebug("RetrieveYoutubeUrl::gotResponse: status: %d", status);
2473@@ -70,6 +102,20 @@
2474 parse(reply->readAll());
2475 }
2476
2477+#ifdef YT_GET_VIDEOINFO
2478+void RetrieveYoutubeUrl::gotVideoInfoResponse() {
2479+ qDebug("RetrieveYoutubeUrl::gotVideoInfoResponse");
2480+
2481+ QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
2482+
2483+ if (reply->error() != QNetworkReply::NoError) {
2484+ emit errorOcurred((int)reply->error(), reply->errorString());
2485+ return;
2486+ }
2487+ parseVideoInfo(reply->readAll());
2488+}
2489+#endif
2490+
2491 void RetrieveYoutubeUrl::parse(QByteArray text) {
2492 qDebug("RetrieveYoutubeUrl::parse");
2493
2494@@ -86,13 +132,37 @@
2495 url_title = "Youtube video";
2496 }
2497
2498+ //qDebug("RetrieveYoutubeUrl::parse: replyString: %s",replyString.toLatin1().constData());
2499+
2500+ QString player;
2501+ QRegExp rxplayer("html5player-([\\d,\\w,-]+)\\.js");
2502+ if (rxplayer.indexIn(replyString) != -1) {
2503+ player = rxplayer.cap(1);
2504+ qDebug("RetrieveYoutubeUrl::parse: html5player: %s", player.toLatin1().constData());
2505+ }
2506+
2507+ QString fmtArray;
2508 QRegExp regex("\\\"url_encoded_fmt_stream_map\\\"\\s*:\\s*\\\"([^\\\"]*)");
2509- regex.indexIn(replyString);
2510- QString fmtArray = regex.cap(1);
2511+ if (regex.indexIn(replyString) != -1) {
2512+ fmtArray = regex.cap(1);
2513+ }
2514+
2515+ QRegExp regex2("\\\"adaptive_fmts\\\"\\s*:\\s*\\\"([^\\\"]*)");
2516+ if (regex2.indexIn(replyString) != -1) {
2517+ if (!fmtArray.isEmpty()) fmtArray += ",";
2518+ fmtArray += regex2.cap(1);
2519+ }
2520+
2521 fmtArray = sanitizeForUnicodePoint(fmtArray);
2522 fmtArray.replace(QRegExp("\\\\(.)"), "\\1");
2523
2524- bool signature_not_found = false;
2525+#ifndef YT_GET_VIDEOINFO
2526+ bool failed_to_decrypt_signature = false;
2527+#endif
2528+
2529+ #if QT_VERSION >= 0x050000
2530+ QUrlQuery * q = new QUrlQuery();
2531+ #endif
2532
2533 QList<QByteArray> codeList = fmtArray.toLatin1().split(',');
2534 foreach(QByteArray code, codeList) {
2535@@ -100,60 +170,283 @@
2536 //qDebug("code: %s", code.constData());
2537
2538 QUrl line;
2539- line.setEncodedQuery(code);
2540+ #if QT_VERSION >= 0x050000
2541+ q->setQuery(code);
2542+ #else
2543+ QUrl * q = &line;
2544+ q->setEncodedQuery(code);
2545+ #endif
2546
2547- if (line.hasQueryItem("url")) {
2548- QUrl url( line.queryItemValue("url") );
2549+ if (q->hasQueryItem("url")) {
2550+ QUrl url( q->queryItemValue("url") );
2551 line.setScheme(url.scheme());
2552 line.setHost(url.host());
2553 line.setPath(url.path());
2554- line.setEncodedQuery( line.encodedQuery() + "&" + url.encodedQuery() );
2555- line.removeQueryItem("url");
2556+ q->removeQueryItem("url");
2557+ #if QT_VERSION >= 0x050000
2558+ q->setQuery( q->query(QUrl::FullyDecoded) + "&" + url.query(QUrl::FullyDecoded) );
2559+ /*
2560+ QList < QPair < QString,QString > > l = q->queryItems();
2561+ for (int n=0; n < l.count(); n++) {
2562+ qDebug("n: %d, %s = %s", n, l[n].first.toLatin1().constData(), l[n].second.toLatin1().constData());
2563+ }
2564+ */
2565+ #else
2566+ q->setEncodedQuery( q->encodedQuery() + "&" + url.encodedQuery() );
2567+ /*
2568+ QList < QPair < QString,QString > > l = q->queryItems();
2569+ for (int n=0; n < l.count(); n++) {
2570+ qDebug("n: %d, %s = %s", n, l[n].first.toLatin1().constData(), l[n].second.toLatin1().constData());
2571+ }
2572+ */
2573+ #endif
2574
2575- if (line.hasQueryItem("sig")) {
2576- line.addQueryItem("signature", line.queryItemValue("sig"));
2577- line.removeQueryItem("sig");
2578+ if (q->hasQueryItem("sig")) {
2579+ q->addQueryItem("signature", q->queryItemValue("sig"));
2580+ q->removeQueryItem("sig");
2581 }
2582 else
2583- if (line.hasQueryItem("s")) {
2584- QString signature = YTSig::aclara(line.queryItemValue("s"));
2585+ if (q->hasQueryItem("s")) {
2586+ #ifdef USE_PLAYER_NAME
2587+ QString signature = YTSig::aclara(q->queryItemValue("s"), player);
2588+ #else
2589+ QString signature = YTSig::aclara(q->queryItemValue("s"));
2590+ #endif
2591 if (!signature.isEmpty()) {
2592- line.addQueryItem("signature", signature);
2593+ q->addQueryItem("signature", signature);
2594 } else {
2595- signature_not_found = true;
2596+ #ifndef YT_GET_VIDEOINFO
2597+ failed_to_decrypt_signature = true;
2598+ #endif
2599 }
2600- line.removeQueryItem("s");
2601+ q->removeQueryItem("s");
2602 }
2603- line.removeAllQueryItems("fallback_host");
2604- line.removeAllQueryItems("type");
2605- if ((line.hasQueryItem("itag")) && (line.hasQueryItem("signature"))) {
2606- QString itag = line.queryItemValue("itag");
2607- line.removeAllQueryItems("itag"); // Remove duplicated itag
2608- line.addQueryItem("itag", itag);
2609+ q->removeAllQueryItems("fallback_host");
2610+ q->removeAllQueryItems("type");
2611+
2612+ if ((q->hasQueryItem("itag")) && (q->hasQueryItem("signature"))) {
2613+ QString itag = q->queryItemValue("itag");
2614+ q->removeAllQueryItems("itag"); // Remove duplicated itag
2615+ q->addQueryItem("itag", itag);
2616+ #if QT_VERSION >= 0x050000
2617+ line.setQuery(q->query(QUrl::FullyDecoded));
2618+ #endif
2619 urlMap[itag.toInt()] = line.toString();
2620 //qDebug("line: %s", line.toString().toLatin1().constData());
2621 }
2622 }
2623 }
2624
2625+ #if QT_VERSION >= 0x050000
2626+ delete q;
2627+ #endif
2628+
2629 qDebug("RetrieveYoutubeUrl::parse: url count: %d", urlMap.count());
2630
2631- if ((urlMap.count() == 0) && (signature_not_found)) {
2632- qDebug("RetrieveYoutubeUrl::parse: no url found with valid signature");
2633- emit signatureNotFound(url_title);
2634- return;
2635- }
2636-
2637- QString p_url = findPreferredUrl();
2638- //qDebug("p_url: '%s'", p_url.toLatin1().constData());
2639-
2640- if (!p_url.isNull()) {
2641- emit gotUrls(urlMap);
2642- emit gotPreferredUrl(p_url);
2643- } else {
2644- emit gotEmptyList();
2645- }
2646-}
2647+#ifndef YT_GET_VIDEOINFO
2648+ if ((urlMap.count() == 0) && (failed_to_decrypt_signature)) {
2649+ qDebug("RetrieveYoutubeUrl::parse: no url found with valid signature");
2650+ emit signatureNotFound(url_title);
2651+ return;
2652+ }
2653+#else
2654+ if (urlMap.count() == 0) {
2655+ qDebug("RetrieveYoutubeUrl::parse: no url found with valid signature");
2656+ fetchVideoInfoPage();
2657+ return;
2658+ }
2659+#endif
2660+
2661+ QString p_url = findPreferredUrl();
2662+ //qDebug("p_url: '%s'", p_url.toLatin1().constData());
2663+
2664+ if (!p_url.isNull()) {
2665+ emit gotUrls(urlMap);
2666+ emit gotPreferredUrl(p_url);
2667+ } else {
2668+ emit gotEmptyList();
2669+ }
2670+}
2671+
2672+QString RetrieveYoutubeUrl::getVideoID(QString video_url) {
2673+ if (video_url.contains("youtu.be/")) {
2674+ video_url.replace("youtu.be/", "youtube.com/watch?v=");
2675+ }
2676+ else
2677+ if (video_url.contains("y2u.be/")) {
2678+ video_url.replace("y2u.be/", "youtube.com/watch?v=");
2679+ }
2680+ else
2681+ if (video_url.contains("m.youtube.com")) {
2682+ video_url.replace("m.youtube.com", "www.youtube.com");
2683+ }
2684+
2685+ if ((video_url.startsWith("youtube.com")) || (video_url.startsWith("www.youtube.com"))) video_url = "http://" + video_url;
2686+
2687+ //qDebug("RetrieveYoutubeUrl::getVideoID: video_url: %s", video_url.toLatin1().constData());
2688+
2689+ QUrl url(video_url);
2690+
2691+ QString ID;
2692+
2693+#if QT_VERSION >= 0x050000
2694+ QUrlQuery * q = new QUrlQuery(url);
2695+#else
2696+ const QUrl * q = &url;
2697+#endif
2698+
2699+ if ((url.host().contains("youtube")) && (url.path().contains("watch_videos"))) {
2700+ if (q->hasQueryItem("video_ids")) {
2701+ int index = 0;
2702+ if (q->hasQueryItem("index")) index = q->queryItemValue("index").toInt();
2703+ QStringList list = q->queryItemValue("video_ids").split(",");
2704+ if (index < list.count()) ID = list[index];
2705+ }
2706+ }
2707+ else
2708+ if ((url.host().contains("youtube")) && (url.path().contains("watch"))) {
2709+ if (q->hasQueryItem("v")) {
2710+ ID = q->queryItemValue("v");
2711+ }
2712+ }
2713+
2714+#if QT_VERSION >= 0x050000
2715+ delete q;
2716+#endif
2717+
2718+ //qDebug("RetrieveYoutubeUrl::getVideoID: ID: %s", ID.toLatin1().constData());
2719+
2720+ return ID;
2721+}
2722+
2723+bool RetrieveYoutubeUrl::isUrlSupported(const QString & url) {
2724+ return (!getVideoID(url).isEmpty());
2725+}
2726+
2727+QString RetrieveYoutubeUrl::fullUrl(const QString & url) {
2728+ QString r;
2729+ QString ID = getVideoID(url);
2730+ if (!ID.isEmpty()) r = "http://www.youtube.com/watch?v=" + ID;
2731+ return r;
2732+}
2733+
2734+#ifdef YT_GET_VIDEOINFO
2735+void RetrieveYoutubeUrl::parseVideoInfo(QByteArray text) {
2736+ urlMap.clear();
2737+
2738+ #if QT_VERSION >= 0x050000
2739+ QUrlQuery all;
2740+ all.setQuery(text);
2741+ #else
2742+ QUrl all;
2743+ all.setEncodedQuery(text);
2744+ #endif
2745+
2746+ QByteArray fmtArray;
2747+ fmtArray = all.queryItemValue("url_encoded_fmt_stream_map").toLatin1();
2748+ if (!fmtArray.isEmpty()) fmtArray += ",";
2749+ fmtArray += all.queryItemValue("adaptive_fmts").toLatin1();
2750+
2751+ /*
2752+ qDebug("fmtArray: %s", fmtArray.constData());
2753+ return;
2754+ */
2755+
2756+ bool failed_to_decrypt_signature = false;
2757+
2758+ #if QT_VERSION >= 0x050000
2759+ QUrlQuery * q = new QUrlQuery();
2760+ #endif
2761+
2762+ QList<QByteArray> codeList = fmtArray.split(',');
2763+ foreach(QByteArray code, codeList) {
2764+ code = QUrl::fromPercentEncoding(code).toLatin1();
2765+ //qDebug("code: %s", code.constData());
2766+
2767+ QUrl line;
2768+ #if QT_VERSION >= 0x050000
2769+ q->setQuery(code);
2770+ #else
2771+ QUrl * q = &line;
2772+ q->setEncodedQuery(code);
2773+ #endif
2774+
2775+ if (q->hasQueryItem("url")) {
2776+ QUrl url( q->queryItemValue("url") );
2777+ line.setScheme(url.scheme());
2778+ line.setHost(url.host());
2779+ line.setPath(url.path());
2780+ q->removeQueryItem("url");
2781+ #if QT_VERSION >= 0x050000
2782+ q->setQuery( q->query(QUrl::FullyDecoded) + "&" + url.query(QUrl::FullyDecoded) );
2783+ /*
2784+ QList < QPair < QString,QString > > l = q->queryItems();
2785+ for (int n=0; n < l.count(); n++) {
2786+ qDebug("n: %d, %s = %s", n, l[n].first.toLatin1().constData(), l[n].second.toLatin1().constData());
2787+ }
2788+ */
2789+ #else
2790+ q->setEncodedQuery( q->encodedQuery() + "&" + url.encodedQuery() );
2791+ /*
2792+ QList < QPair < QString,QString > > l = q->queryItems();
2793+ for (int n=0; n < l.count(); n++) {
2794+ qDebug("n: %d, %s = %s", n, l[n].first.toLatin1().constData(), l[n].second.toLatin1().constData());
2795+ }
2796+ */
2797+ #endif
2798+
2799+ if (q->hasQueryItem("sig")) {
2800+ q->addQueryItem("signature", q->queryItemValue("sig"));
2801+ q->removeQueryItem("sig");
2802+ }
2803+ else
2804+ if (q->hasQueryItem("s")) {
2805+ QString signature = YTSig::aclara(q->queryItemValue("s"), "", "aclara_f");
2806+ if (!signature.isEmpty()) {
2807+ q->addQueryItem("signature", signature);
2808+ } else {
2809+ failed_to_decrypt_signature = true;
2810+ }
2811+ q->removeQueryItem("s");
2812+ }
2813+ q->removeAllQueryItems("fallback_host");
2814+ q->removeAllQueryItems("type");
2815+ if ((q->hasQueryItem("itag")) && (q->hasQueryItem("signature"))) {
2816+ QString itag = q->queryItemValue("itag");
2817+ q->removeAllQueryItems("itag"); // Remove duplicated itag
2818+ q->addQueryItem("itag", itag);
2819+ #if QT_VERSION >= 0x050000
2820+ line.setQuery(q->query(QUrl::FullyDecoded));
2821+ #endif
2822+ urlMap[itag.toInt()] = line.toString();
2823+ //qDebug("line: %s", line.toString().toLatin1().constData());
2824+ }
2825+ }
2826+ }
2827+
2828+ #if QT_VERSION >= 0x050000
2829+ delete q;
2830+ #endif
2831+
2832+ qDebug("RetrieveYoutubeUrl::parseVideoInfo: url count: %d", urlMap.count());
2833+
2834+ if ((urlMap.count() == 0) && (failed_to_decrypt_signature)) {
2835+ qDebug("RetrieveYoutubeUrl::parseVideoInfo: no url found with valid signature");
2836+ emit signatureNotFound(url_title);
2837+ return;
2838+ }
2839+
2840+ QString p_url = findPreferredUrl();
2841+ //qDebug("p_url: '%s'", p_url.toLatin1().constData());
2842+
2843+ if (!p_url.isNull()) {
2844+ emit gotUrls(urlMap);
2845+ emit gotPreferredUrl(p_url);
2846+ } else {
2847+ emit gotEmptyList();
2848+ }
2849+}
2850+#endif
2851
2852 QString RetrieveYoutubeUrl::findPreferredUrl() {
2853 latest_preferred_url = findPreferredUrl(urlMap, preferred_quality);
2854@@ -225,6 +518,27 @@
2855 return p_url;
2856 }
2857
2858+QString RetrieveYoutubeUrl::findBestAudio(const QMap<int, QString>& urlMap) {
2859+ QString url;
2860+
2861+ url = urlMap.value(DASH_AUDIO_MP4_256, QString());
2862+ if (!url.isEmpty()) return url;
2863+
2864+ url = urlMap.value(DASH_AUDIO_WEBM_192, QString());
2865+ if (!url.isEmpty()) return url;
2866+
2867+ url = urlMap.value(DASH_AUDIO_MP4_128, QString());
2868+ if (!url.isEmpty()) return url;
2869+
2870+ url = urlMap.value(DASH_AUDIO_WEBM_128, QString());
2871+ if (!url.isEmpty()) return url;
2872+
2873+ url = urlMap.value(DASH_AUDIO_MP4_48, QString());
2874+ if (!url.isEmpty()) return url;
2875+
2876+ return url;
2877+}
2878+
2879 QString RetrieveYoutubeUrl::sanitizeForUnicodePoint(QString string) {
2880 QRegExp rx("\\\\u(\\d{4})");
2881 while (rx.indexIn(string) != -1) {
2882
2883=== modified file 'src/retrieveyoutubeurl.h'
2884--- src/retrieveyoutubeurl.h 2013-10-03 17:16:56 +0000
2885+++ src/retrieveyoutubeurl.h 2014-07-30 15:30:47 +0000
2886@@ -23,14 +23,21 @@
2887 #include <QNetworkReply>
2888 #include <QMap>
2889
2890+#define YT_GET_VIDEOINFO
2891+
2892 class RetrieveYoutubeUrl : public QObject
2893 {
2894 Q_OBJECT
2895
2896 public:
2897 enum Quality { FLV_240p = 5, MP4_360p = 18, MP4_720p = 22, FLV_360p = 34,
2898- FLV_480p = 35, MP4_1080p = 37, WEBM_360p = 43,
2899- WEBM_480p = 44, WEBM_720p = 45, WEBM_1080p = 46 };
2900+ FLV_480p = 35, MP4_1080p = 37, WEBM_360p = 43,
2901+ WEBM_480p = 44, WEBM_720p = 45, WEBM_1080p = 46,
2902+ DASH_AUDIO_MP4_48 = 139, DASH_AUDIO_MP4_128 = 140, DASH_AUDIO_MP4_256 = 141,
2903+ DASH_AUDIO_WEBM_128 = 171, DASH_AUDIO_WEBM_192 = 172,
2904+ DASH_VIDEO_1080p = 137, DASH_VIDEO_720p = 136,
2905+ DASH_VIDEO_480p = 135, DASH_VIDEO_360p = 134,
2906+ DASH_VIDEO_240p = 133 };
2907
2908 RetrieveYoutubeUrl( QObject* parent = 0 );
2909 ~RetrieveYoutubeUrl();
2910@@ -38,8 +45,8 @@
2911 void fetchPage(const QString & url);
2912 void close();
2913
2914- void setUserAgent(const QString & s) { user_agent = s; };
2915- QString userAgent() { return user_agent; };
2916+ static void setUserAgent(const QString & s) { user_agent = s; };
2917+ static QString userAgent() { return user_agent; };
2918
2919 void setPreferredQuality(Quality q) { preferred_quality = q; }
2920 Quality preferredQuality() { return preferred_quality; }
2921@@ -47,10 +54,15 @@
2922 static QString findPreferredUrl(const QMap<int, QString>& urlMap, Quality q);
2923 QString findPreferredUrl();
2924
2925+ static QString findBestAudio(const QMap<int, QString>& urlMap);
2926+
2927 QString urlTitle() { return url_title; }
2928 QString latestPreferredUrl() { return latest_preferred_url; }
2929 QString origUrl() { return orig_url; }
2930
2931+ bool isUrlSupported(const QString & url);
2932+ QString fullUrl(const QString & url);
2933+
2934 signals:
2935 void gotUrls(const QMap<int, QString>&);
2936 void gotPreferredUrl(const QString &);
2937@@ -62,12 +74,18 @@
2938 void signatureNotFound(const QString & title);
2939
2940 protected slots:
2941- void gotResponse(QNetworkReply* reply);
2942+ void gotResponse();
2943 void parse(QByteArray text);
2944+#ifdef YT_GET_VIDEOINFO
2945+ void gotVideoInfoResponse();
2946+ void parseVideoInfo(QByteArray text);
2947+ void fetchVideoInfoPage();
2948+#endif
2949
2950 protected:
2951 static QString sanitizeForUnicodePoint(QString string);
2952 static void htmlDecode(QString& string);
2953+ QString getVideoID(QString video_url);
2954
2955 QMap<int, QString> urlMap;
2956 QString url_title;
2957@@ -75,7 +93,11 @@
2958 QString latest_preferred_url;
2959
2960 Quality preferred_quality;
2961- QString user_agent;
2962+ static QString user_agent;
2963+
2964+#ifdef YT_GET_VIDEOINFO
2965+ QString video_id;
2966+#endif
2967
2968 private:
2969 QNetworkAccessManager* manager;
2970
2971=== modified file 'src/rvu.cpp'
2972--- src/rvu.cpp 2013-10-03 17:16:56 +0000
2973+++ src/rvu.cpp 2014-07-30 15:30:47 +0000
2974@@ -1,5 +1,5 @@
2975 /* smtube, a small youtube browser.
2976- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
2977+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
2978 Copyright (C) 2010 Ori Rejwan
2979
2980 This program is free software; you can redistribute it and/or modify
2981
2982=== modified file 'src/rvu.h'
2983--- src/rvu.h 2013-10-03 17:16:56 +0000
2984+++ src/rvu.h 2014-07-30 15:30:47 +0000
2985@@ -1,5 +1,5 @@
2986 /* smtube, a small youtube browser.
2987- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
2988+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
2989 Copyright (C) 2010 Ori Rejwan
2990
2991 This program is free software; you can redistribute it and/or modify
2992
2993=== modified file 'src/searchbox.cpp'
2994--- src/searchbox.cpp 2013-04-13 00:30:34 +0000
2995+++ src/searchbox.cpp 2014-07-30 15:30:47 +0000
2996@@ -1,5 +1,5 @@
2997 /* smtube, a small youtube browser.
2998- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
2999+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
3000 Copyright (C) 2010 Ori Rejwan
3001
3002 This program is free software; you can redistribute it and/or modify
3003
3004=== modified file 'src/searchbox.h'
3005--- src/searchbox.h 2013-04-13 00:30:34 +0000
3006+++ src/searchbox.h 2014-07-30 15:30:47 +0000
3007@@ -1,5 +1,5 @@
3008 /* smtube, a small youtube browser.
3009- Copyright (C) 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>
3010+ Copyright (C) 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>
3011 Copyright (C) 2010 Ori Rejwan
3012
3013 This program is free software; you can redistribute it and/or modify
3014
3015=== modified file 'src/smtube.pro'
3016--- src/smtube.pro 2013-10-03 17:16:56 +0000
3017+++ src/smtube.pro 2014-07-30 15:30:47 +0000
3018@@ -4,21 +4,31 @@
3019
3020 TEMPLATE = app
3021 QT += network xml
3022-TARGET =
3023-DEPENDPATH += . qtsingleapplication
3024-INCLUDEPATH += . qtsingleapplication
3025-
3026-CONFIG += qt warn_on release
3027+TARGET = smtube
3028+INCLUDEPATH += qtsingleapplication
3029+
3030+CONFIG += qt warn_on
3031+CONFIG += release
3032+#CONFIG += debug
3033+
3034+CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
3035
3036 RESOURCES = icons.qrc
3037
3038 DEFINES += NO_SMPLAYER_SUPPORT
3039 DEFINES += YT_USE_SCRIPT
3040+DEFINES += USE_SINGLE_APPLICATION
3041+
3042+isEqual(QT_MAJOR_VERSION, 5) {
3043+ QT += widgets gui
3044+}
3045
3046 contains( DEFINES, YT_USE_SCRIPT ) {
3047- HEADERS += codedownloader.h
3048- SOURCES += codedownloader.cpp
3049- QT += script
3050+ HEADERS += codedownloader.h
3051+ SOURCES += codedownloader.cpp
3052+ QT += script
3053+} else {
3054+ #DEFINES += YTSIG_STATIC
3055 }
3056
3057 # Input
3058@@ -36,10 +46,11 @@
3059 yttabbar.h \
3060 lineedit_with_icon.h \
3061 filechooser.h \
3062+ regions.h \
3063 configdialog.h \
3064- players.h \
3065 version.h \
3066- about.h
3067+ about.h \
3068+ fontpref.h
3069
3070 SOURCES += myborder.cpp \
3071 myicon.cpp \
3072@@ -55,8 +66,8 @@
3073 yttabbar.cpp \
3074 lineedit_with_icon.cpp \
3075 filechooser.cpp \
3076+ regions.cpp \
3077 configdialog.cpp \
3078- players.cpp \
3079 version.cpp \
3080 about.cpp \
3081 main.cpp
3082@@ -89,12 +100,16 @@
3083 translations/smtube_hr.ts \
3084 translations/smtube_bg.ts \
3085 translations/smtube_vi.ts \
3086- translations/smtube_id.ts
3087-
3088-
3089-# qtsingleapplication
3090-SOURCES += qtsingleapplication.cpp qtlocalpeer.cpp
3091-HEADERS += qtsingleapplication.h qtlocalpeer.h
3092+ translations/smtube_id.ts \
3093+ translations/smtube_ca.ts \
3094+ translations/smtube_ar.ts \
3095+ translations/smtube_de.ts \
3096+ translations/smtube_zh_TW.ts \
3097+ translations/smtube_nqo.ts \
3098+ translations/smtube_et.ts \
3099+ translations/smtube_ko.ts \
3100+ translations/smtube_fr.ts \
3101+ translations/smtube_it.ts
3102
3103 unix {
3104 UI_DIR = .ui
3105@@ -102,8 +117,29 @@
3106 OBJECTS_DIR = .obj
3107
3108 DEFINES += TRANSLATION_PATH=$(TRANSLATION_PATH)
3109+ DEFINES += USE_PLAYERS
3110+ #DEFINES -= USE_SINGLE_APPLICATION
3111 }
3112
3113 win32 {
3114 RC_FILE = smtube.rc
3115 }
3116+
3117+amiga {
3118+ DEFINES -= USE_PLAYERS
3119+ DEFINES += QT_NO_DEBUG_OUTPUT
3120+ DEFINES -= USE_SINGLE_APPLICATION
3121+}
3122+
3123+# qtsingleapplication
3124+contains(DEFINES, USE_SINGLE_APPLICATION) {
3125+ SOURCES += qtsingleapplication/qtsingleapplication.cpp qtsingleapplication/qtlocalpeer.cpp
3126+ HEADERS += qtsingleapplication/qtsingleapplication.h qtsingleapplication/qtlocalpeer.h
3127+}
3128+
3129+contains(DEFINES, USE_PLAYERS) {
3130+ HEADERS += players.h
3131+ SOURCES += players.cpp
3132+} else {
3133+ HEADERS += hcplayer.h
3134+}
3135
3136=== modified file 'src/smtube.rc'
3137--- src/smtube.rc 2013-10-03 17:16:56 +0000
3138+++ src/smtube.rc 2014-07-30 15:30:47 +0000
3139@@ -1,7 +1,7 @@
3140 #include <winver.h>
3141
3142-#define SMTUBE_FILEVERSION 1,8,0,0
3143-#define SMTUBE_PRODVERSION "1.8.0.0\0"
3144+#define SMTUBE_FILEVERSION 2,1,0,0
3145+#define SMTUBE_PRODVERSION "2.1.0.0\0"
3146
3147 VS_VERSION_INFO VERSIONINFO
3148 FILEVERSION SMTUBE_FILEVERSION
3149
3150=== modified file 'src/translations/.tx/config'
3151--- src/translations/.tx/config 2013-10-03 17:16:56 +0000
3152+++ src/translations/.tx/config 2014-07-30 15:30:47 +0000
3153@@ -7,4 +7,4 @@
3154 source_lang = en
3155 source_file = smtube_en.ts
3156 trans.he = smtube_he_IL.ts
3157-minimum_perc = 90
3158+minimum_perc = 50
3159
3160=== added file 'src/translations/smtube_ar.ts'
3161--- src/translations/smtube_ar.ts 1970-01-01 00:00:00 +0000
3162+++ src/translations/smtube_ar.ts 2014-07-30 15:30:47 +0000
3163@@ -0,0 +1,979 @@
3164+<?xml version="1.0" encoding="utf-8"?>
3165+<!DOCTYPE TS>
3166+<TS version="2.0" language="ar">
3167+<context>
3168+ <name>About</name>
3169+ <message>
3170+ <location filename="../about.ui" line="14"/>
3171+ <source>About...</source>
3172+ <translation>حولَ...</translation>
3173+ </message>
3174+ <message>
3175+ <location filename="../about.ui" line="33"/>
3176+ <source>&amp;Info</source>
3177+ <translation>م&amp;علومات</translation>
3178+ </message>
3179+ <message>
3180+ <location filename="../about.ui" line="53"/>
3181+ <location filename="../about.ui" line="109"/>
3182+ <location filename="../about.ui" line="165"/>
3183+ <source>icon</source>
3184+ <translation>آيقونة</translation>
3185+ </message>
3186+ <message>
3187+ <location filename="../about.ui" line="89"/>
3188+ <source>&amp;Translators</source>
3189+ <translation>المت&amp;رجمون</translation>
3190+ </message>
3191+ <message>
3192+ <location filename="../about.ui" line="145"/>
3193+ <source>&amp;License</source>
3194+ <translation>الر&amp;خصة</translation>
3195+ </message>
3196+ <message>
3197+ <location filename="../about.cpp" line="33"/>
3198+ <source>YouTube%1 Browser for SMPlayer</source>
3199+ <translation>متص�ح YouTube%1 للمشغل SMPlayer</translation>
3200+ </message>
3201+ <message>
3202+ <location filename="../about.cpp" line="35"/>
3203+ <source>Based on UMPlayer</source>
3204+ <translation>مبني على المشغل UMPlayer</translation>
3205+ </message>
3206+ <message>
3207+ <location filename="../about.cpp" line="37"/>
3208+ <source>Version: %1</source>
3209+ <translation>الإصدار: %1</translation>
3210+ </message>
3211+ <message>
3212+ <location filename="../about.cpp" line="39"/>
3213+ <source>Portable Edition</source>
3214+ <translation>نسخة محمولة</translation>
3215+ </message>
3216+ <message>
3217+ <location filename="../about.cpp" line="42"/>
3218+ <source>Compiled with Qt %1 (using %2)</source>
3219+ <translation>ج�مّع بـ Qt %1 (باستخدام %2)</translation>
3220+ </message>
3221+ <message>
3222+ <location filename="../about.cpp" line="44"/>
3223+ <source>Visit our web for updates:</source>
3224+ <translation>ز�ر موقعنا من اجل التحديثات:</translation>
3225+ </message>
3226+ <message>
3227+ <location filename="../about.cpp" line="98"/>
3228+ <source>Spanish</source>
3229+ <translation>الاسبانية</translation>
3230+ </message>
3231+ <message>
3232+ <location filename="../about.cpp" line="115"/>
3233+ <source>Russian</source>
3234+ <translation>الروسية</translation>
3235+ </message>
3236+ <message>
3237+ <location filename="../about.cpp" line="108"/>
3238+ <source>Lithuanian</source>
3239+ <translation>اللثوانية</translation>
3240+ </message>
3241+ <message>
3242+ <location filename="../about.cpp" line="102"/>
3243+ <source>Japanese</source>
3244+ <translation>اليابانية</translation>
3245+ </message>
3246+ <message>
3247+ <location filename="../about.cpp" line="99"/>
3248+ <source>Basque</source>
3249+ <translation>الباسكية</translation>
3250+ </message>
3251+ <message>
3252+ <location filename="../about.cpp" line="104"/>
3253+ <source>Portuguese</source>
3254+ <translation>البرتغالية</translation>
3255+ </message>
3256+ <message>
3257+ <location filename="../about.cpp" line="119"/>
3258+ <source>Hungarian</source>
3259+ <translation>الهنغارية</translation>
3260+ </message>
3261+ <message>
3262+ <location filename="../about.cpp" line="114"/>
3263+ <source>Polish</source>
3264+ <translation>البولندية</translation>
3265+ </message>
3266+ <message>
3267+ <location filename="../about.cpp" line="111"/>
3268+ <source>Hebrew</source>
3269+ <translation>العبرية</translation>
3270+ </message>
3271+ <message>
3272+ <location filename="../about.cpp" line="106"/>
3273+ <source>Ukrainian</source>
3274+ <translation>الاوكرانية</translation>
3275+ </message>
3276+ <message>
3277+ <location filename="../about.cpp" line="125"/>
3278+ <source>Norwegian Nynorsk</source>
3279+ <translation>النينورسكية النرويجية</translation>
3280+ </message>
3281+ <message>
3282+ <location filename="../about.cpp" line="101"/>
3283+ <source>Czech</source>
3284+ <translation>الجيكية</translation>
3285+ </message>
3286+ <message>
3287+ <location filename="../about.cpp" line="92"/>
3288+ <source>Many people contributed with translations.</source>
3289+ <translation>أسهم الكثيرون �ي الترجمات.</translation>
3290+ </message>
3291+ <message>
3292+ <location filename="../about.cpp" line="93"/>
3293+ <source>You can also help to translate SMPlayer into your own language.</source>
3294+ <translation>بإمكانك أيضاً أن تساعد �ي ترجمة SMPlayer إلى لغتك.</translation>
3295+ </message>
3296+ <message>
3297+ <location filename="../about.cpp" line="94"/>
3298+ <source>Visit %1 and join a translation team.</source>
3299+ <translation>ز�ر %1 وانضم إلى �ريق للترجمة.</translation>
3300+ </message>
3301+ <message>
3302+ <location filename="../about.cpp" line="96"/>
3303+ <source>Current translators from the transifex teams:</source>
3304+ <translation>المترجمون الحاليون من ��رَق Transifex:</translation>
3305+ </message>
3306+ <message>
3307+ <location filename="../about.cpp" line="103"/>
3308+ <source>Korean</source>
3309+ <translation>الكورية</translation>
3310+ </message>
3311+ <message>
3312+ <location filename="../about.cpp" line="109"/>
3313+ <source>Malay</source>
3314+ <translation>الملايو</translation>
3315+ </message>
3316+ <message>
3317+ <location filename="../about.cpp" line="110"/>
3318+ <source>Portuguese - Brazil</source>
3319+ <translation>البرتغالية - البرازيل</translation>
3320+ </message>
3321+ <message>
3322+ <location filename="../about.cpp" line="112"/>
3323+ <source>Simplified Chinese</source>
3324+ <translation>الصينية المبسطة</translation>
3325+ </message>
3326+ <message>
3327+ <location filename="../about.cpp" line="116"/>
3328+ <source>French</source>
3329+ <translation>ال�رنسية</translation>
3330+ </message>
3331+ <message>
3332+ <location filename="../about.cpp" line="118"/>
3333+ <source>Danish</source>
3334+ <translation>الدانماركية</translation>
3335+ </message>
3336+ <message>
3337+ <location filename="../about.cpp" line="122"/>
3338+ <source>German</source>
3339+ <translation>الالمانية</translation>
3340+ </message>
3341+ <message>
3342+ <location filename="../about.cpp" line="123"/>
3343+ <source>Traditional Chinese</source>
3344+ <translation>الصينية التقليدية</translation>
3345+ </message>
3346+ <message>
3347+ <location filename="../about.cpp" line="126"/>
3348+ <source>Swedish</source>
3349+ <translation>السويدية</translation>
3350+ </message>
3351+ <message>
3352+ <location filename="../about.cpp" line="120"/>
3353+ <source>Turkish</source>
3354+ <translation>التركية</translation>
3355+ </message>
3356+ <message>
3357+ <location filename="../about.cpp" line="121"/>
3358+ <source>Finnish</source>
3359+ <translation>ال�لندية</translation>
3360+ </message>
3361+ <message>
3362+ <location filename="../about.cpp" line="127"/>
3363+ <source>Arabic</source>
3364+ <translation>العربية</translation>
3365+ </message>
3366+ <message>
3367+ <location filename="../about.cpp" line="128"/>
3368+ <source>Georgian</source>
3369+ <translation>الجيورجية</translation>
3370+ </message>
3371+ <message>
3372+ <location filename="../about.cpp" line="105"/>
3373+ <source>Serbian</source>
3374+ <translation>الصربية</translation>
3375+ </message>
3376+ <message>
3377+ <location filename="../about.cpp" line="100"/>
3378+ <source>Croatian</source>
3379+ <translation>الكرواتية</translation>
3380+ </message>
3381+ <message>
3382+ <location filename="../about.cpp" line="124"/>
3383+ <source>Bulgarian</source>
3384+ <translation>البلغارية</translation>
3385+ </message>
3386+ <message>
3387+ <location filename="../about.cpp" line="113"/>
3388+ <source>Vietnamese</source>
3389+ <translation>ال�يتنامية</translation>
3390+ </message>
3391+ <message>
3392+ <location filename="../about.cpp" line="117"/>
3393+ <source>Indonesian</source>
3394+ <translation>الإندونيسية</translation>
3395+ </message>
3396+ <message>
3397+ <location filename="../about.cpp" line="129"/>
3398+ <source>Arabic - Saudi Arabia</source>
3399+ <translation>العربية - المملكة العربية السعودية</translation>
3400+ </message>
3401+ <message>
3402+ <location filename="../about.cpp" line="130"/>
3403+ <source>Sinhala</source>
3404+ <translation>السنهالية</translation>
3405+ </message>
3406+ <message>
3407+ <location filename="../about.cpp" line="131"/>
3408+ <source>Greek</source>
3409+ <translation>اليونانية</translation>
3410+ </message>
3411+ <message>
3412+ <location filename="../about.cpp" line="132"/>
3413+ <source>Estonian</source>
3414+ <translation>الاستونية</translation>
3415+ </message>
3416+ <message>
3417+ <location filename="../about.cpp" line="133"/>
3418+ <source>N&apos;ko</source>
3419+ <translation>أنكو</translation>
3420+ </message>
3421+ <message>
3422+ <location filename="../about.cpp" line="134"/>
3423+ <source>Italian</source>
3424+ <translation>الايطالية</translation>
3425+ </message>
3426+ <message>
3427+ <location filename="../about.cpp" line="135"/>
3428+ <source>Uzbek</source>
3429+ <translation>الأوزبكية</translation>
3430+ </message>
3431+ <message>
3432+ <location filename="../about.cpp" line="136"/>
3433+ <source>Catalan</source>
3434+ <translation>الكتالانية</translation>
3435+ </message>
3436+ <message>
3437+ <location filename="../about.cpp" line="137"/>
3438+ <source>Slovak</source>
3439+ <translation>السلو�اكية</translation>
3440+ </message>
3441+ <message>
3442+ <location filename="../about.cpp" line="138"/>
3443+ <source>British English</source>
3444+ <translation type="unfinished"></translation>
3445+ </message>
3446+ <message>
3447+ <location filename="../about.cpp" line="139"/>
3448+ <source>Albanian</source>
3449+ <translation type="unfinished"></translation>
3450+ </message>
3451+ <message>
3452+ <location filename="../about.cpp" line="164"/>
3453+ <source>&lt;b&gt;%1&lt;/b&gt; (%2)</source>
3454+ <translation>&lt;b&gt;%1&lt;/b&gt; (%2)</translation>
3455+ </message>
3456+ <message>
3457+ <location filename="../about.cpp" line="107"/>
3458+ <source>Galician</source>
3459+ <translation>الجاليكية</translation>
3460+ </message>
3461+</context>
3462+<context>
3463+ <name>CodeDownloader</name>
3464+ <message>
3465+ <location filename="../codedownloader.cpp" line="37"/>
3466+ <source>Downloading...</source>
3467+ <translation>ي�نزّل...</translation>
3468+ </message>
3469+ <message>
3470+ <location filename="../codedownloader.cpp" line="58"/>
3471+ <source>Connecting to %1</source>
3472+ <translation>يتصل بـ%1</translation>
3473+ </message>
3474+ <message>
3475+ <location filename="../codedownloader.cpp" line="126"/>
3476+ <source>The Youtube code has been updated successfully.</source>
3477+ <translation>تمّ تحديث النص البرمجي لـYouTube بنجاح.</translation>
3478+ </message>
3479+ <message>
3480+ <location filename="../codedownloader.cpp" line="127"/>
3481+ <source>Installed version: %1</source>
3482+ <translation>الإصدار المثبَّت: %1</translation>
3483+ </message>
3484+ <message>
3485+ <location filename="../codedownloader.cpp" line="128"/>
3486+ <source>Success</source>
3487+ <translation>نجحَ</translation>
3488+ </message>
3489+ <message>
3490+ <location filename="../codedownloader.cpp" line="133"/>
3491+ <location filename="../codedownloader.cpp" line="138"/>
3492+ <source>Error</source>
3493+ <translation>خطأ</translation>
3494+ </message>
3495+ <message>
3496+ <location filename="../codedownloader.cpp" line="133"/>
3497+ <source>An error happened writing %1</source>
3498+ <translation>حصل خطأ أثناء الكتابة الى المل� %1</translation>
3499+ </message>
3500+ <message>
3501+ <location filename="../codedownloader.cpp" line="138"/>
3502+ <source>An error happened while downloading the file:&lt;br&gt;%1</source>
3503+ <translation>وقع خطأ عند تنزيل المل�:&lt;br&gt;%1</translation>
3504+ </message>
3505+</context>
3506+<context>
3507+ <name>ConfigDialog</name>
3508+ <message>
3509+ <location filename="../configdialog.ui" line="14"/>
3510+ <source>Settings</source>
3511+ <translation>الإعدادات</translation>
3512+ </message>
3513+ <message>
3514+ <location filename="../configdialog.ui" line="20"/>
3515+ <source>Recording</source>
3516+ <translation>يجري التسجيل</translation>
3517+ </message>
3518+ <message>
3519+ <location filename="../configdialog.ui" line="28"/>
3520+ <source>&amp;Save to this folder</source>
3521+ <translation>اح�&amp;ظ الى هذا المجلد</translation>
3522+ </message>
3523+ <message>
3524+ <location filename="../configdialog.ui" line="45"/>
3525+ <source>&amp;Quality</source>
3526+ <translation>الن&amp;وعية</translation>
3527+ </message>
3528+ <message>
3529+ <location filename="../configdialog.ui" line="157"/>
3530+ <source>Standard Feeds</source>
3531+ <translation>التغذية القياسية</translation>
3532+ </message>
3533+ <message>
3534+ <location filename="../configdialog.ui" line="163"/>
3535+ <source>&amp;Region:</source>
3536+ <translation>المن&amp;طقة:</translation>
3537+ </message>
3538+ <message>
3539+ <location filename="../configdialog.ui" line="189"/>
3540+ <source>Period of &amp;time:</source>
3541+ <translation>ال�ترة ال&amp;زمنية:</translation>
3542+ </message>
3543+ <message>
3544+ <location filename="../configdialog.ui" line="80"/>
3545+ <source>Playback</source>
3546+ <translation>تشغيل</translation>
3547+ </message>
3548+ <message>
3549+ <location filename="../configdialog.ui" line="88"/>
3550+ <source>Q&amp;uality:</source>
3551+ <translation>ال&amp;نوعية:</translation>
3552+ </message>
3553+ <message>
3554+ <location filename="../configdialog.ui" line="125"/>
3555+ <source>&amp;Player:</source>
3556+ <translation>المشغ&amp;ل:</translation>
3557+ </message>
3558+ <message>
3559+ <location filename="../configdialog.cpp" line="40"/>
3560+ <source>All time</source>
3561+ <translation>كل الوقت</translation>
3562+ </message>
3563+ <message>
3564+ <location filename="../configdialog.cpp" line="41"/>
3565+ <source>This month</source>
3566+ <translation>هذا الشهر</translation>
3567+ </message>
3568+ <message>
3569+ <location filename="../configdialog.cpp" line="42"/>
3570+ <source>This week</source>
3571+ <translation>هذا الاسبوع</translation>
3572+ </message>
3573+ <message>
3574+ <location filename="../configdialog.cpp" line="43"/>
3575+ <source>Today</source>
3576+ <translation>اليوم</translation>
3577+ </message>
3578+</context>
3579+<context>
3580+ <name>DownloadFile</name>
3581+ <message>
3582+ <location filename="../downloadfile.cpp" line="117"/>
3583+ <source>%1 hours</source>
3584+ <translation>%1 ساعة</translation>
3585+ </message>
3586+ <message>
3587+ <location filename="../downloadfile.cpp" line="123"/>
3588+ <source>%1 minutes</source>
3589+ <translation>%1 دقيقة</translation>
3590+ </message>
3591+ <message>
3592+ <location filename="../downloadfile.cpp" line="110"/>
3593+ <source>unknown time remaining</source>
3594+ <translation>الوقت المتبقي غير معلوم</translation>
3595+ </message>
3596+ <message>
3597+ <location filename="../downloadfile.cpp" line="126"/>
3598+ <source>%1 seconds</source>
3599+ <translation>%1 ثانية</translation>
3600+ </message>
3601+ <message>
3602+ <location filename="../downloadfile.cpp" line="127"/>
3603+ <source>%1 remaining</source>
3604+ <translation>%1 متبقي</translation>
3605+ </message>
3606+ <message>
3607+ <location filename="../downloadfile.cpp" line="132"/>
3608+ <source>%1 of %2 MB</source>
3609+ <translation>%1 من %2 ميغا بايت</translation>
3610+ </message>
3611+ <message>
3612+ <location filename="../downloadfile.cpp" line="138"/>
3613+ <source>%1 of %2 KB</source>
3614+ <translation>%1 من %2 كيلوبايت</translation>
3615+ </message>
3616+ <message>
3617+ <location filename="../downloadfile.cpp" line="144"/>
3618+ <source>%1 of %2 bytes</source>
3619+ <translation>%1 من %2 بايت</translation>
3620+ </message>
3621+ <message>
3622+ <location filename="../downloadfile.cpp" line="148"/>
3623+ <source>%1 of unknown size</source>
3624+ <translation>%1 من حجم غير معلوم</translation>
3625+ </message>
3626+ <message>
3627+ <location filename="../downloadfile.cpp" line="153"/>
3628+ <source>%1 MB/sec</source>
3629+ <translation>%1 م ب/ثا</translation>
3630+ </message>
3631+ <message>
3632+ <location filename="../downloadfile.cpp" line="157"/>
3633+ <source>%1 KB/sec</source>
3634+ <translation>%1 ك ب/ثا</translation>
3635+ </message>
3636+ <message>
3637+ <location filename="../downloadfile.cpp" line="161"/>
3638+ <source>%1 bytes/sec</source>
3639+ <translation>%1 بايت/ثا</translation>
3640+ </message>
3641+</context>
3642+<context>
3643+ <name>FileChooser</name>
3644+ <message>
3645+ <location filename="../filechooser.cpp" line="54"/>
3646+ <source>Click to select a file or folder</source>
3647+ <translation>اضغط لاختيار مل� او مجلد</translation>
3648+ </message>
3649+</context>
3650+<context>
3651+ <name>RecordingDelegate</name>
3652+ <message>
3653+ <location filename="../recordingdialog.cpp" line="124"/>
3654+ <source>Canceled</source>
3655+ <translation>أ�لغيَ</translation>
3656+ </message>
3657+ <message>
3658+ <location filename="../recordingdialog.cpp" line="124"/>
3659+ <source>Error</source>
3660+ <translation>خطأ</translation>
3661+ </message>
3662+ <message>
3663+ <location filename="../recordingdialog.cpp" line="154"/>
3664+ <source>%1 MB</source>
3665+ <translation>%1 م ب</translation>
3666+ </message>
3667+ <message>
3668+ <location filename="../recordingdialog.cpp" line="158"/>
3669+ <source>%1 KB</source>
3670+ <translation>%1 ك ب</translation>
3671+ </message>
3672+ <message>
3673+ <location filename="../recordingdialog.cpp" line="162"/>
3674+ <source>%1 bytes</source>
3675+ <translation>%1 بايت</translation>
3676+ </message>
3677+</context>
3678+<context>
3679+ <name>RecordingDialog</name>
3680+ <message>
3681+ <location filename="../recordingdialog.cpp" line="207"/>
3682+ <location filename="../recordingdialog.cpp" line="477"/>
3683+ <source>Recordings</source>
3684+ <translation>التسجيلات</translation>
3685+ </message>
3686+ <message>
3687+ <location filename="../recordingdialog.cpp" line="208"/>
3688+ <source>&amp;Clear list</source>
3689+ <translation>مسح ال&amp;قائمة</translation>
3690+ </message>
3691+ <message>
3692+ <location filename="../recordingdialog.cpp" line="209"/>
3693+ <location filename="../recordingdialog.cpp" line="606"/>
3694+ <source>&amp;Open folder</source>
3695+ <translation>�&amp;تح المجلد</translation>
3696+ </message>
3697+ <message>
3698+ <location filename="../recordingdialog.cpp" line="301"/>
3699+ <location filename="../recordingdialog.cpp" line="313"/>
3700+ <location filename="../recordingdialog.cpp" line="722"/>
3701+ <source>There was an error in retrieving the download URL.</source>
3702+ <translation>حصل خطأ اثناء استحضار رابط التحميل.</translation>
3703+ </message>
3704+ <message>
3705+ <location filename="../recordingdialog.cpp" line="301"/>
3706+ <location filename="../recordingdialog.cpp" line="313"/>
3707+ <location filename="../recordingdialog.cpp" line="722"/>
3708+ <source>Recording failed</source>
3709+ <translation>�شل التسجيل</translation>
3710+ </message>
3711+ <message>
3712+ <location filename="../recordingdialog.cpp" line="364"/>
3713+ <location filename="../recordingdialog.cpp" line="740"/>
3714+ <source>Starting</source>
3715+ <translation>يجري البدأ</translation>
3716+ </message>
3717+ <message>
3718+ <location filename="../recordingdialog.cpp" line="398"/>
3719+ <source>Error</source>
3720+ <translation>خطأ</translation>
3721+ </message>
3722+ <message>
3723+ <location filename="../recordingdialog.cpp" line="402"/>
3724+ <source>Completed</source>
3725+ <translation>اكتمل</translation>
3726+ </message>
3727+ <message numerus="yes">
3728+ <location filename="../recordingdialog.cpp" line="481"/>
3729+ <source>%1% of %n video - Recordings</source>
3730+ <translation>
3731+ <numerusform>لا تسجيل �يديو من %n</numerusform>
3732+ <numerusform>تسجيل �يديو واحد من %n</numerusform>
3733+ <numerusform>تسجيلا �يديو من %n</numerusform>
3734+ <numerusform>%1% تسجيلات �يديو من %n</numerusform>
3735+ <numerusform>%1% تسجيل �يديو من %n</numerusform>
3736+ <numerusform>%1% تسجيل �يديو من %n</numerusform>
3737+ </translation>
3738+ </message>
3739+ <message>
3740+ <location filename="../recordingdialog.cpp" line="566"/>
3741+ <source>&amp;Cancel</source>
3742+ <translation>أل&amp;غ�</translation>
3743+ </message>
3744+ <message>
3745+ <location filename="../recordingdialog.cpp" line="568"/>
3746+ <source>&amp;Remove from list</source>
3747+ <translation>أز&amp;ل من القائمة</translation>
3748+ </message>
3749+ <message>
3750+ <location filename="../recordingdialog.cpp" line="587"/>
3751+ <location filename="../recordingdialog.cpp" line="609"/>
3752+ <source>Remove from &amp;list</source>
3753+ <translation>أزل من الق&amp;ائمة</translation>
3754+ </message>
3755+ <message>
3756+ <location filename="../recordingdialog.cpp" line="585"/>
3757+ <source>&amp;Retry</source>
3758+ <translation>أعد المحاول&amp;ة</translation>
3759+ </message>
3760+ <message>
3761+ <location filename="../recordingdialog.cpp" line="605"/>
3762+ <source>&amp;Play</source>
3763+ <translation>تش&amp;غيل</translation>
3764+ </message>
3765+ <message>
3766+ <location filename="../recordingdialog.cpp" line="608"/>
3767+ <source>&amp;Delete</source>
3768+ <translation>حذ&amp;�</translation>
3769+ </message>
3770+ <message>
3771+ <location filename="../recordingdialog.cpp" line="687"/>
3772+ <source>Fetching URL...</source>
3773+ <translation>استحضار الرابط...</translation>
3774+ </message>
3775+ <message>
3776+ <location filename="../recordingdialog.cpp" line="704"/>
3777+ <source>File error</source>
3778+ <translation>خطأ �ي المل�</translation>
3779+ </message>
3780+ <message>
3781+ <location filename="../recordingdialog.cpp" line="705"/>
3782+ <source>The file does not exists, would you like to remove it from the list?</source>
3783+ <translation>المل� غير موجود، أترغب �ي ازالته من اللائحة؟</translation>
3784+ </message>
3785+</context>
3786+<context>
3787+ <name>Regions</name>
3788+ <message>
3789+ <location filename="../regions.cpp" line="26"/>
3790+ <source>Argentina</source>
3791+ <translation type="unfinished"></translation>
3792+ </message>
3793+ <message>
3794+ <location filename="../regions.cpp" line="27"/>
3795+ <source>Australia</source>
3796+ <translation type="unfinished"></translation>
3797+ </message>
3798+ <message>
3799+ <location filename="../regions.cpp" line="29"/>
3800+ <source>Belgium</source>
3801+ <translation type="unfinished"></translation>
3802+ </message>
3803+ <message>
3804+ <location filename="../regions.cpp" line="30"/>
3805+ <source>Brazil</source>
3806+ <translation type="unfinished"></translation>
3807+ </message>
3808+ <message>
3809+ <location filename="../regions.cpp" line="31"/>
3810+ <source>Canada</source>
3811+ <translation type="unfinished"></translation>
3812+ </message>
3813+ <message>
3814+ <location filename="../regions.cpp" line="32"/>
3815+ <source>Chile</source>
3816+ <translation type="unfinished"></translation>
3817+ </message>
3818+ <message>
3819+ <location filename="../regions.cpp" line="33"/>
3820+ <source>Colombia</source>
3821+ <translation type="unfinished"></translation>
3822+ </message>
3823+ <message>
3824+ <location filename="../regions.cpp" line="34"/>
3825+ <source>Czech Republic</source>
3826+ <translation type="unfinished"></translation>
3827+ </message>
3828+ <message>
3829+ <location filename="../regions.cpp" line="35"/>
3830+ <source>Egypt</source>
3831+ <translation type="unfinished"></translation>
3832+ </message>
3833+ <message>
3834+ <location filename="../regions.cpp" line="36"/>
3835+ <source>France</source>
3836+ <translation type="unfinished"></translation>
3837+ </message>
3838+ <message>
3839+ <location filename="../regions.cpp" line="37"/>
3840+ <source>Germany</source>
3841+ <translation type="unfinished"></translation>
3842+ </message>
3843+ <message>
3844+ <location filename="../regions.cpp" line="38"/>
3845+ <source>Great Britain</source>
3846+ <translation type="unfinished"></translation>
3847+ </message>
3848+ <message>
3849+ <location filename="../regions.cpp" line="39"/>
3850+ <source>Hong Kong</source>
3851+ <translation type="unfinished"></translation>
3852+ </message>
3853+ <message>
3854+ <location filename="../regions.cpp" line="40"/>
3855+ <source>Hungary</source>
3856+ <translation type="unfinished"></translation>
3857+ </message>
3858+ <message>
3859+ <location filename="../regions.cpp" line="41"/>
3860+ <source>India</source>
3861+ <translation type="unfinished"></translation>
3862+ </message>
3863+ <message>
3864+ <location filename="../regions.cpp" line="42"/>
3865+ <source>Ireland</source>
3866+ <translation type="unfinished"></translation>
3867+ </message>
3868+ <message>
3869+ <location filename="../regions.cpp" line="43"/>
3870+ <source>Israel</source>
3871+ <translation type="unfinished"></translation>
3872+ </message>
3873+ <message>
3874+ <location filename="../regions.cpp" line="44"/>
3875+ <source>Italy</source>
3876+ <translation type="unfinished"></translation>
3877+ </message>
3878+ <message>
3879+ <location filename="../regions.cpp" line="45"/>
3880+ <source>Japan</source>
3881+ <translation type="unfinished"></translation>
3882+ </message>
3883+ <message>
3884+ <location filename="../regions.cpp" line="46"/>
3885+ <source>Jordan</source>
3886+ <translation type="unfinished"></translation>
3887+ </message>
3888+ <message>
3889+ <location filename="../regions.cpp" line="47"/>
3890+ <source>Malaysia</source>
3891+ <translation type="unfinished"></translation>
3892+ </message>
3893+ <message>
3894+ <location filename="../regions.cpp" line="48"/>
3895+ <source>Mexico</source>
3896+ <translation type="unfinished"></translation>
3897+ </message>
3898+ <message>
3899+ <location filename="../regions.cpp" line="49"/>
3900+ <source>Morocco</source>
3901+ <translation type="unfinished"></translation>
3902+ </message>
3903+ <message>
3904+ <location filename="../regions.cpp" line="50"/>
3905+ <source>Netherlands</source>
3906+ <translation type="unfinished"></translation>
3907+ </message>
3908+ <message>
3909+ <location filename="../regions.cpp" line="51"/>
3910+ <source>New Zealand</source>
3911+ <translation type="unfinished"></translation>
3912+ </message>
3913+ <message>
3914+ <location filename="../regions.cpp" line="52"/>
3915+ <source>Peru</source>
3916+ <translation type="unfinished"></translation>
3917+ </message>
3918+ <message>
3919+ <location filename="../regions.cpp" line="53"/>
3920+ <source>Philippines</source>
3921+ <translation type="unfinished"></translation>
3922+ </message>
3923+ <message>
3924+ <location filename="../regions.cpp" line="54"/>
3925+ <source>Poland</source>
3926+ <translation type="unfinished"></translation>
3927+ </message>
3928+ <message>
3929+ <location filename="../regions.cpp" line="55"/>
3930+ <source>Russia</source>
3931+ <translation type="unfinished"></translation>
3932+ </message>
3933+ <message>
3934+ <location filename="../regions.cpp" line="56"/>
3935+ <source>Saudi Arabia</source>
3936+ <translation type="unfinished"></translation>
3937+ </message>
3938+ <message>
3939+ <location filename="../regions.cpp" line="57"/>
3940+ <source>Singapore</source>
3941+ <translation type="unfinished"></translation>
3942+ </message>
3943+ <message>
3944+ <location filename="../regions.cpp" line="58"/>
3945+ <source>South Africa</source>
3946+ <translation type="unfinished"></translation>
3947+ </message>
3948+ <message>
3949+ <location filename="../regions.cpp" line="59"/>
3950+ <source>South Korea</source>
3951+ <translation type="unfinished"></translation>
3952+ </message>
3953+ <message>
3954+ <location filename="../regions.cpp" line="60"/>
3955+ <source>Spain</source>
3956+ <translation type="unfinished"></translation>
3957+ </message>
3958+ <message>
3959+ <location filename="../regions.cpp" line="61"/>
3960+ <source>Sweden</source>
3961+ <translation type="unfinished"></translation>
3962+ </message>
3963+ <message>
3964+ <location filename="../regions.cpp" line="63"/>
3965+ <source>Taiwan</source>
3966+ <translation type="unfinished"></translation>
3967+ </message>
3968+ <message>
3969+ <location filename="../regions.cpp" line="64"/>
3970+ <source>United Arab Emirates</source>
3971+ <translation type="unfinished"></translation>
3972+ </message>
3973+ <message>
3974+ <location filename="../regions.cpp" line="65"/>
3975+ <source>United States</source>
3976+ <translation type="unfinished"></translation>
3977+ </message>
3978+</context>
3979+<context>
3980+ <name>YTDelegate</name>
3981+ <message>
3982+ <location filename="../ytdelegate.cpp" line="115"/>
3983+ <source>%L1 views</source>
3984+ <translation>%L1 مشاهدة</translation>
3985+ </message>
3986+</context>
3987+<context>
3988+ <name>YTDialog</name>
3989+ <message>
3990+ <location filename="../ytdialog.cpp" line="226"/>
3991+ <source>YouTube Browser - SMPlayer</source>
3992+ <translation>متص�ح يوتيوب - المشغل SMPlayer</translation>
3993+ </message>
3994+ <message>
3995+ <location filename="../ytdialog.cpp" line="274"/>
3996+ <source>Settings</source>
3997+ <translation>إعدادات</translation>
3998+ </message>
3999+ <message>
4000+ <location filename="../ytdialog.cpp" line="280"/>
4001+ <source>Information</source>
4002+ <translation>معلومات</translation>
4003+ </message>
4004+ <message>
4005+ <location filename="../ytdialog.cpp" line="286"/>
4006+ <source>Show recordings</source>
4007+ <translation>أَظه�ر التسجيلات</translation>
4008+ </message>
4009+ <message>
4010+ <location filename="../ytdialog.cpp" line="474"/>
4011+ <source>Most Relevant</source>
4012+ <translation>الأكثر مشابهة</translation>
4013+ </message>
4014+ <message>
4015+ <location filename="../ytdialog.cpp" line="478"/>
4016+ <source>Most Recent</source>
4017+ <translation>الأحدث</translation>
4018+ </message>
4019+ <message>
4020+ <location filename="../ytdialog.cpp" line="482"/>
4021+ <source>Most Viewed</source>
4022+ <translation>الاكثر مشاهدة</translation>
4023+ </message>
4024+ <message>
4025+ <location filename="../ytdialog.cpp" line="486"/>
4026+ <source>Most Popular</source>
4027+ <translation>الاكثر شهرة</translation>
4028+ </message>
4029+ <message>
4030+ <location filename="../ytdialog.cpp" line="505"/>
4031+ <source>Most popular videos on YouTube%1</source>
4032+ <translation>ال�يديوات الاكثر شهرة على يوتيوب YouTube%1</translation>
4033+ </message>
4034+ <message>
4035+ <location filename="../ytdialog.cpp" line="626"/>
4036+ <source>Error: Could not connect to Youtube server.</source>
4037+ <translation>خطأ: لا يمكن الاتصال بخادوم يوتيوب Youtube .</translation>
4038+ </message>
4039+ <message>
4040+ <location filename="../ytdialog.cpp" line="735"/>
4041+ <source>R&amp;ecord audio</source>
4042+ <translation type="unfinished"></translation>
4043+ </message>
4044+ <message>
4045+ <location filename="../ytdialog.cpp" line="739"/>
4046+ <source>&amp;Add URL to the SMPlayer playlist</source>
4047+ <translation>أض� ال&amp;رابط الى قائمة تشغيل SMPlayer</translation>
4048+ </message>
4049+ <message>
4050+ <location filename="../ytdialog.cpp" line="893"/>
4051+ <location filename="../ytdialog.cpp" line="904"/>
4052+ <source>Problems with Youtube</source>
4053+ <translation>مشكلات �ي YouTube</translation>
4054+ </message>
4055+ <message>
4056+ <location filename="../ytdialog.cpp" line="895"/>
4057+ <source>Do you want to update the Youtube code? This may fix the problem.</source>
4058+ <translation>أتريد تحديث النص البرمجي لـليوتيوب YouTube؟ لعل هذا يحلّ المشكلة.</translation>
4059+ </message>
4060+ <message>
4061+ <location filename="../ytdialog.cpp" line="894"/>
4062+ <location filename="../ytdialog.cpp" line="905"/>
4063+ <source>Unfortunately due to changes in Youtube, the video &apos;%1&apos; can&apos;t be played or recorded.</source>
4064+ <translation>نأس�، نظرا لتغييرات �ي يوتيوب Youtube، لا يمكن تشغيل ال�يديو &apos;%1&apos; أو تسجيله.</translation>
4065+ </message>
4066+ <message>
4067+ <location filename="../ytdialog.cpp" line="906"/>
4068+ <source>Maybe updating this application could fix the problem.</source>
4069+ <translation>تحديث هذا التطبيق قد يحل المشكلة.</translation>
4070+ </message>
4071+ <message>
4072+ <location filename="../ytdialog.cpp" line="510"/>
4073+ <source>YouTube%2 results for &quot;%1&quot;</source>
4074+ <translation>نتائج يوتيوب YouTube%2 لـ &quot;%1&quot;</translation>
4075+ </message>
4076+ <message>
4077+ <location filename="../ytdialog.cpp" line="490"/>
4078+ <source>Music</source>
4079+ <translation>موسيقى</translation>
4080+ </message>
4081+ <message>
4082+ <location filename="../ytdialog.cpp" line="494"/>
4083+ <source>Sports</source>
4084+ <translation>رياضة</translation>
4085+ </message>
4086+ <message>
4087+ <location filename="../ytdialog.cpp" line="506"/>
4088+ <source>Most popular sport videos on YouTube%1</source>
4089+ <translation>أشهر �يديوات الرياضة من يوتيوب YouTube%1</translation>
4090+ </message>
4091+ <message>
4092+ <location filename="../ytdialog.cpp" line="507"/>
4093+ <source>Most popular music videos on YouTube%1</source>
4094+ <translation>أشهر �يديوات الموسيقى من يوتيوب YouTube%1</translation>
4095+ </message>
4096+ <message>
4097+ <location filename="../ytdialog.cpp" line="634"/>
4098+ <source>No videos found</source>
4099+ <translation>لم ي�عثر على �يديو</translation>
4100+ </message>
4101+ <message>
4102+ <location filename="../ytdialog.cpp" line="636"/>
4103+ <source>No videos found for &quot;%1&quot;</source>
4104+ <translation>لم ي�عثَر على �يديوات لـ &quot;%1&quot;</translation>
4105+ </message>
4106+ <message>
4107+ <location filename="../ytdialog.cpp" line="733"/>
4108+ <source>&amp;Play video</source>
4109+ <translation>تش&amp;غيل ال�يديو</translation>
4110+ </message>
4111+ <message>
4112+ <location filename="../ytdialog.cpp" line="734"/>
4113+ <source>&amp;Record video</source>
4114+ <translation>تس&amp;جيل ال�يديو</translation>
4115+ </message>
4116+ <message>
4117+ <location filename="../ytdialog.cpp" line="736"/>
4118+ <source>&amp;Watch on YouTube</source>
4119+ <translation>م&amp;شاهدة على YouTube</translation>
4120+ </message>
4121+ <message>
4122+ <location filename="../ytdialog.cpp" line="737"/>
4123+ <source>&amp;Copy link</source>
4124+ <translation>ن&amp;سخ الرابط</translation>
4125+ </message>
4126+ <message>
4127+ <location filename="../ytdialog.cpp" line="249"/>
4128+ <source>Next</source>
4129+ <translation>التالي</translation>
4130+ </message>
4131+ <message>
4132+ <location filename="../ytdialog.cpp" line="255"/>
4133+ <source>Previous</source>
4134+ <translation>السابق</translation>
4135+ </message>
4136+ <message>
4137+ <location filename="../ytdialog.cpp" line="882"/>
4138+ <source>Error</source>
4139+ <translation>خطأ</translation>
4140+ </message>
4141+</context>
4142+</TS>
4143
4144=== modified file 'src/translations/smtube_bg.ts'
4145--- src/translations/smtube_bg.ts 2013-10-03 17:16:56 +0000
4146+++ src/translations/smtube_bg.ts 2014-07-30 15:30:47 +0000
4147@@ -1,12 +1,10 @@
4148-<?xml version="1.0" encoding="utf-8"?>
4149-<!DOCTYPE TS>
4150-<TS version="2.0" language="bg">
4151+<?xml version="1.0" ?><!DOCTYPE TS><TS language="bg" version="2.0">
4152 <context>
4153 <name>About</name>
4154 <message>
4155 <location filename="../about.ui" line="14"/>
4156 <source>About...</source>
4157- <translation>Отно�тно...</translation>
4158+ <translation>Отно�но...</translation>
4159 </message>
4160 <message>
4161 <location filename="../about.ui" line="33"/>
4162@@ -58,167 +56,250 @@
4163 <message>
4164 <location filename="../about.cpp" line="44"/>
4165 <source>Visit our web for updates:</source>
4166- <translation>По�ети наши� уеб �айт за обновлени�:</translation>
4167- </message>
4168- <message>
4169- <location filename="../about.cpp" line="92"/>
4170- <source>The following people have contributed with translations:</source>
4171- <translation>Следните хора �а придоне�ли � превод:</translation>
4172- </message>
4173- <message>
4174- <location filename="../about.cpp" line="94"/>
4175+ <translation>По�ети наши�т уеб �айт за обновлени�:</translation>
4176+ </message>
4177+ <message>
4178+ <location filename="../about.cpp" line="98"/>
4179 <source>Spanish</source>
4180 <translation>И�пан�ки</translation>
4181 </message>
4182 <message>
4183- <location filename="../about.cpp" line="95"/>
4184+ <location filename="../about.cpp" line="115"/>
4185 <source>Russian</source>
4186 <translation>Ру�ки</translation>
4187 </message>
4188 <message>
4189- <location filename="../about.cpp" line="96"/>
4190+ <location filename="../about.cpp" line="108"/>
4191 <source>Lithuanian</source>
4192 <translation>Литов�ки</translation>
4193 </message>
4194 <message>
4195- <location filename="../about.cpp" line="97"/>
4196+ <location filename="../about.cpp" line="102"/>
4197 <source>Japanese</source>
4198 <translation>Япон�ки</translation>
4199 </message>
4200 <message>
4201- <location filename="../about.cpp" line="98"/>
4202- <source>Simplified-Chinese</source>
4203- <translation>Опро�тен китай�ки</translation>
4204- </message>
4205- <message>
4206 <location filename="../about.cpp" line="99"/>
4207 <source>Basque</source>
4208 <translation>Ба�ка</translation>
4209 </message>
4210 <message>
4211- <location filename="../about.cpp" line="100"/>
4212+ <location filename="../about.cpp" line="104"/>
4213 <source>Portuguese</source>
4214 <translation>Португал�ки</translation>
4215 </message>
4216 <message>
4217- <location filename="../about.cpp" line="101"/>
4218+ <location filename="../about.cpp" line="119"/>
4219 <source>Hungarian</source>
4220 <translation>Унгар�ки</translation>
4221 </message>
4222 <message>
4223- <location filename="../about.cpp" line="102"/>
4224+ <location filename="../about.cpp" line="114"/>
4225 <source>Polish</source>
4226 <translation>Пол�ки</translation>
4227 </message>
4228 <message>
4229- <location filename="../about.cpp" line="104"/>
4230- <source>Greek</source>
4231- <translation>Гръцки</translation>
4232- </message>
4233- <message>
4234- <location filename="../about.cpp" line="105"/>
4235+ <location filename="../about.cpp" line="111"/>
4236 <source>Hebrew</source>
4237 <translation>Иврит</translation>
4238 </message>
4239 <message>
4240 <location filename="../about.cpp" line="106"/>
4241- <source>Portuguese (Brazil)</source>
4242- <translation>Португал�ки (Бразил�ки)</translation>
4243- </message>
4244- <message>
4245- <location filename="../about.cpp" line="107"/>
4246 <source>Ukrainian</source>
4247- <translation>Украйн�ки</translation>
4248+ <translation>Украин�ки</translation>
4249 </message>
4250 <message>
4251- <location filename="../about.cpp" line="108"/>
4252+ <location filename="../about.cpp" line="125"/>
4253 <source>Norwegian Nynorsk</source>
4254 <translation>�орвежки</translation>
4255 </message>
4256 <message>
4257- <location filename="../about.cpp" line="109"/>
4258+ <location filename="../about.cpp" line="101"/>
4259 <source>Czech</source>
4260 <translation>Чешки</translation>
4261 </message>
4262 <message>
4263- <location filename="../about.cpp" line="110"/>
4264+ <location filename="../about.cpp" line="92"/>
4265+ <source>Many people contributed with translations.</source>
4266+ <translation>Много хора �а доприне�ли � преводи.</translation>
4267+ </message>
4268+ <message>
4269+ <location filename="../about.cpp" line="93"/>
4270+ <source>You can also help to translate SMPlayer into your own language.</source>
4271+ <translation>Вие �ъщо можете да помогнете като преведете SMPlayer на майчини� �и език.</translation>
4272+ </message>
4273+ <message>
4274+ <location filename="../about.cpp" line="94"/>
4275+ <source>Visit %1 and join a translation team.</source>
4276+ <translation>По�етете %1 и �е при�ъединете към екипа преводачи.</translation>
4277+ </message>
4278+ <message>
4279+ <location filename="../about.cpp" line="96"/>
4280+ <source>Current translators from the transifex teams:</source>
4281+ <translation>�а�то�щи преводачи от transifex-екипите:</translation>
4282+ </message>
4283+ <message>
4284+ <location filename="../about.cpp" line="103"/>
4285+ <source>Korean</source>
4286+ <translation>Корей�ки</translation>
4287+ </message>
4288+ <message>
4289+ <location filename="../about.cpp" line="109"/>
4290 <source>Malay</source>
4291 <translation>Малай�ки</translation>
4292 </message>
4293 <message>
4294- <location filename="../about.cpp" line="111"/>
4295+ <location filename="../about.cpp" line="110"/>
4296+ <source>Portuguese - Brazil</source>
4297+ <translation>Португал�ки - бразил�ки</translation>
4298+ </message>
4299+ <message>
4300+ <location filename="../about.cpp" line="112"/>
4301+ <source>Simplified Chinese</source>
4302+ <translation>Опро�тен китай�ки</translation>
4303+ </message>
4304+ <message>
4305+ <location filename="../about.cpp" line="116"/>
4306+ <source>French</source>
4307+ <translation>Френ�ки</translation>
4308+ </message>
4309+ <message>
4310+ <location filename="../about.cpp" line="118"/>
4311+ <source>Danish</source>
4312+ <translation>Дат�ки</translation>
4313+ </message>
4314+ <message>
4315+ <location filename="../about.cpp" line="122"/>
4316+ <source>German</source>
4317+ <translation>�ем�ки</translation>
4318+ </message>
4319+ <message>
4320+ <location filename="../about.cpp" line="123"/>
4321+ <source>Traditional Chinese</source>
4322+ <translation>Традиционен китай�ки</translation>
4323+ </message>
4324+ <message>
4325+ <location filename="../about.cpp" line="126"/>
4326 <source>Swedish</source>
4327 <translation>Швед�ки</translation>
4328 </message>
4329 <message>
4330- <location filename="../about.cpp" line="112"/>
4331+ <location filename="../about.cpp" line="120"/>
4332 <source>Turkish</source>
4333 <translation>Тур�ки</translation>
4334 </message>
4335 <message>
4336- <location filename="../about.cpp" line="113"/>
4337+ <location filename="../about.cpp" line="121"/>
4338 <source>Finnish</source>
4339 <translation>Фин�ки</translation>
4340 </message>
4341 <message>
4342- <location filename="../about.cpp" line="114"/>
4343+ <location filename="../about.cpp" line="127"/>
4344+ <source>Arabic</source>
4345+ <translation>�раб�ки</translation>
4346+ </message>
4347+ <message>
4348+ <location filename="../about.cpp" line="128"/>
4349 <source>Georgian</source>
4350 <translation>Грузин�ки</translation>
4351 </message>
4352 <message>
4353- <location filename="../about.cpp" line="115"/>
4354+ <location filename="../about.cpp" line="105"/>
4355 <source>Serbian</source>
4356- <translation type="unfinished"></translation>
4357+ <translation>Сръб�ки</translation>
4358 </message>
4359 <message>
4360- <location filename="../about.cpp" line="116"/>
4361+ <location filename="../about.cpp" line="100"/>
4362 <source>Croatian</source>
4363- <translation type="unfinished"></translation>
4364+ <translation>Хърват�ки</translation>
4365 </message>
4366 <message>
4367- <location filename="../about.cpp" line="117"/>
4368+ <location filename="../about.cpp" line="124"/>
4369 <source>Bulgarian</source>
4370- <translation type="unfinished"></translation>
4371+ <translation>Българ�ки</translation>
4372 </message>
4373 <message>
4374- <location filename="../about.cpp" line="118"/>
4375+ <location filename="../about.cpp" line="113"/>
4376 <source>Vietnamese</source>
4377- <translation type="unfinished"></translation>
4378+ <translation>Виетнам�ки</translation>
4379 </message>
4380 <message>
4381- <location filename="../about.cpp" line="119"/>
4382+ <location filename="../about.cpp" line="117"/>
4383 <source>Indonesian</source>
4384- <translation type="unfinished"></translation>
4385- </message>
4386- <message>
4387- <location filename="../about.cpp" line="143"/>
4388+ <translation>Индонезий�ки</translation>
4389+ </message>
4390+ <message>
4391+ <location filename="../about.cpp" line="129"/>
4392+ <source>Arabic - Saudi Arabia</source>
4393+ <translation>�раб�ки - Саудит�ка �раби�</translation>
4394+ </message>
4395+ <message>
4396+ <location filename="../about.cpp" line="130"/>
4397+ <source>Sinhala</source>
4398+ <translation>Синхала</translation>
4399+ </message>
4400+ <message>
4401+ <location filename="../about.cpp" line="131"/>
4402+ <source>Greek</source>
4403+ <translation>Гръцки</translation>
4404+ </message>
4405+ <message>
4406+ <location filename="../about.cpp" line="132"/>
4407+ <source>Estonian</source>
4408+ <translation>Е�тон�ки</translation>
4409+ </message>
4410+ <message>
4411+ <location filename="../about.cpp" line="133"/>
4412+ <source>N&apos;ko</source>
4413+ <translation>�&apos;ко</translation>
4414+ </message>
4415+ <message>
4416+ <location filename="../about.cpp" line="134"/>
4417+ <source>Italian</source>
4418+ <translation>Италиан�ки</translation>
4419+ </message>
4420+ <message>
4421+ <location filename="../about.cpp" line="135"/>
4422+ <source>Uzbek</source>
4423+ <translation>Узбеки�тан�ки</translation>
4424+ </message>
4425+ <message>
4426+ <location filename="../about.cpp" line="136"/>
4427+ <source>Catalan</source>
4428+ <translation>Каталон�ки</translation>
4429+ </message>
4430+ <message>
4431+ <location filename="../about.cpp" line="137"/>
4432+ <source>Slovak</source>
4433+ <translation>Словашки</translation>
4434+ </message>
4435+ <message>
4436+ <location filename="../about.cpp" line="138"/>
4437+ <source>British English</source>
4438+ <translation>Британ�ки англий�ки</translation>
4439+ </message>
4440+ <message>
4441+ <location filename="../about.cpp" line="139"/>
4442+ <source>Albanian</source>
4443+ <translation>�лбан�ки</translation>
4444+ </message>
4445+ <message>
4446+ <location filename="../about.cpp" line="164"/>
4447 <source>&lt;b&gt;%1&lt;/b&gt; (%2)</source>
4448 <translation>&lt;b&gt;%1&lt;/b&gt; (%2)</translation>
4449 </message>
4450 <message>
4451- <location filename="../about.cpp" line="103"/>
4452+ <location filename="../about.cpp" line="107"/>
4453 <source>Galician</source>
4454 <translation>Гали�ий�ки</translation>
4455 </message>
4456- <message>
4457- <source>&amp;Youtube</source>
4458- <translation type="obsolete">&amp;Youtube</translation>
4459- </message>
4460- <message>
4461- <source>Founded in February 2005, YouTube&amp;trade; is the world&apos;s most popular online video community, allowing millions of people to discover, watch and share originally-created videos. YouTube&amp;trade; provides a forum for people to connect, inform, and inspire others across the globe and acts as a distribution platform for original content creators and advertisers large and small.</source>
4462- <translation type="obsolete">О�нована през Февруари 2005 г., YouTube ™ е най-попул�рниата онлайн видео общно�т, позвол�вайки на милиони хора да откриват, гледат и �подел�т оригинални видеоклипове. YouTube ™ предо�тав� форум за хората да �е �вързват, о�ведом�ват и вдъхнов�ват други хора по цели� �в�т и да дей�тва като платформа за разпро�транение за �ъздатели на оригинално �ъдържание и малки и големи рекламодатели.</translation>
4463- </message>
4464- <message>
4465- <source>By using this application you hereby agree to be bound by Google Terms of Services located at %1.</source>
4466- <translation type="obsolete">Използвайки това приложение Вие на�то�щему приемате обвръзването � Google Terms of Services намиращи �а на %1.</translation>
4467- </message>
4468 </context>
4469 <context>
4470 <name>CodeDownloader</name>
4471 <message>
4472 <location filename="../codedownloader.cpp" line="37"/>
4473 <source>Downloading...</source>
4474- <translation>Свал�не...</translation>
4475+ <translation>Изтегл�не...</translation>
4476 </message>
4477 <message>
4478 <location filename="../codedownloader.cpp" line="58"/>
4479@@ -226,35 +307,35 @@
4480 <translation>Свързване към %1</translation>
4481 </message>
4482 <message>
4483- <location filename="../codedownloader.cpp" line="124"/>
4484+ <location filename="../codedownloader.cpp" line="126"/>
4485 <source>The Youtube code has been updated successfully.</source>
4486- <translation>Youtube кодът беше обновен у�пешно.</translation>
4487+ <translation>Кодът на Youtube беше обновен у�пешно.</translation>
4488 </message>
4489 <message>
4490- <location filename="../codedownloader.cpp" line="125"/>
4491+ <location filename="../codedownloader.cpp" line="127"/>
4492 <source>Installed version: %1</source>
4493 <translation>Ин�талирана вер�и�: %1</translation>
4494 </message>
4495 <message>
4496- <location filename="../codedownloader.cpp" line="126"/>
4497+ <location filename="../codedownloader.cpp" line="128"/>
4498 <source>Success</source>
4499 <translation>У�пех</translation>
4500 </message>
4501 <message>
4502- <location filename="../codedownloader.cpp" line="131"/>
4503- <location filename="../codedownloader.cpp" line="136"/>
4504+ <location filename="../codedownloader.cpp" line="133"/>
4505+ <location filename="../codedownloader.cpp" line="138"/>
4506 <source>Error</source>
4507 <translation>Грешка</translation>
4508 </message>
4509 <message>
4510- <location filename="../codedownloader.cpp" line="131"/>
4511+ <location filename="../codedownloader.cpp" line="133"/>
4512 <source>An error happened writing %1</source>
4513 <translation>Възникна грешка при запи�а на %1</translation>
4514 </message>
4515 <message>
4516- <location filename="../codedownloader.cpp" line="136"/>
4517+ <location filename="../codedownloader.cpp" line="138"/>
4518 <source>An error happened while downloading the file:&lt;br&gt;%1</source>
4519- <translation>Възникна грешка при �вал�нето на: &lt;br&gt;%1</translation>
4520+ <translation>Възникна грешка при изтегл�нето на:&lt;br&gt;%1</translation>
4521 </message>
4522 </context>
4523 <context>
4524@@ -272,7 +353,7 @@
4525 <message>
4526 <location filename="../configdialog.ui" line="28"/>
4527 <source>&amp;Save to this folder</source>
4528- <translation>&amp;Запиши в тази директорич</translation>
4529+ <translation>&amp;Запиши в тази директори�</translation>
4530 </message>
4531 <message>
4532 <location filename="../configdialog.ui" line="45"/>
4533@@ -280,598 +361,610 @@
4534 <translation>&amp;Каче�тво</translation>
4535 </message>
4536 <message>
4537- <location filename="../configdialog.ui" line="149"/>
4538+ <location filename="../configdialog.ui" line="157"/>
4539 <source>Standard Feeds</source>
4540- <translation>Стандартни �пон�ори</translation>
4541+ <translation>Стандартни абонаменти</translation>
4542 </message>
4543 <message>
4544- <location filename="../configdialog.ui" line="155"/>
4545+ <location filename="../configdialog.ui" line="163"/>
4546 <source>&amp;Region:</source>
4547 <translation>&amp;Регион:</translation>
4548 </message>
4549 <message>
4550- <location filename="../configdialog.ui" line="181"/>
4551+ <location filename="../configdialog.ui" line="189"/>
4552 <source>Period of &amp;time:</source>
4553 <translation>Период от &amp;време:</translation>
4554 </message>
4555 <message>
4556 <location filename="../configdialog.ui" line="80"/>
4557 <source>Playback</source>
4558- <translation>Запу�ни</translation>
4559+ <translation>Изпълн�ване</translation>
4560 </message>
4561 <message>
4562 <location filename="../configdialog.ui" line="88"/>
4563 <source>Q&amp;uality:</source>
4564- <translation>К&amp;аче�тво</translation>
4565+ <translation>К&amp;аче�тво:</translation>
4566 </message>
4567 <message>
4568- <location filename="../configdialog.ui" line="118"/>
4569+ <location filename="../configdialog.ui" line="125"/>
4570 <source>&amp;Player:</source>
4571 <translation>%Плеър:</translation>
4572 </message>
4573 <message>
4574- <location filename="../configdialog.cpp" line="31"/>
4575+ <location filename="../configdialog.cpp" line="40"/>
4576+ <source>All time</source>
4577+ <translation>По в��ко време</translation>
4578+ </message>
4579+ <message>
4580+ <location filename="../configdialog.cpp" line="41"/>
4581+ <source>This month</source>
4582+ <translation>Този ме�ец</translation>
4583+ </message>
4584+ <message>
4585+ <location filename="../configdialog.cpp" line="42"/>
4586+ <source>This week</source>
4587+ <translation>Тази �едмица</translation>
4588+ </message>
4589+ <message>
4590+ <location filename="../configdialog.cpp" line="43"/>
4591+ <source>Today</source>
4592+ <translation>Дне�</translation>
4593+ </message>
4594+</context>
4595+<context>
4596+ <name>DownloadFile</name>
4597+ <message>
4598+ <location filename="../downloadfile.cpp" line="117"/>
4599+ <source>%1 hours</source>
4600+ <translation>%1 ча�а</translation>
4601+ </message>
4602+ <message>
4603+ <location filename="../downloadfile.cpp" line="123"/>
4604+ <source>%1 minutes</source>
4605+ <translation>%1 минути</translation>
4606+ </message>
4607+ <message>
4608+ <location filename="../downloadfile.cpp" line="110"/>
4609+ <source>unknown time remaining</source>
4610+ <translation>неизве�тно о�таващо време</translation>
4611+ </message>
4612+ <message>
4613+ <location filename="../downloadfile.cpp" line="126"/>
4614+ <source>%1 seconds</source>
4615+ <translation>%1 �екунди</translation>
4616+ </message>
4617+ <message>
4618+ <location filename="../downloadfile.cpp" line="127"/>
4619+ <source>%1 remaining</source>
4620+ <translation>%1 о�таващи</translation>
4621+ </message>
4622+ <message>
4623+ <location filename="../downloadfile.cpp" line="132"/>
4624+ <source>%1 of %2 MB</source>
4625+ <translation>%1 от %2 МБ</translation>
4626+ </message>
4627+ <message>
4628+ <location filename="../downloadfile.cpp" line="138"/>
4629+ <source>%1 of %2 KB</source>
4630+ <translation>%1 от %2 КБ</translation>
4631+ </message>
4632+ <message>
4633+ <location filename="../downloadfile.cpp" line="144"/>
4634+ <source>%1 of %2 bytes</source>
4635+ <translation>%1 от %2 байта</translation>
4636+ </message>
4637+ <message>
4638+ <location filename="../downloadfile.cpp" line="148"/>
4639+ <source>%1 of unknown size</source>
4640+ <translation>%1 � неизве�тен размер</translation>
4641+ </message>
4642+ <message>
4643+ <location filename="../downloadfile.cpp" line="153"/>
4644+ <source>%1 MB/sec</source>
4645+ <translation>%1 МБ/�ек</translation>
4646+ </message>
4647+ <message>
4648+ <location filename="../downloadfile.cpp" line="157"/>
4649+ <source>%1 KB/sec</source>
4650+ <translation>%1 КБ/�ек</translation>
4651+ </message>
4652+ <message>
4653+ <location filename="../downloadfile.cpp" line="161"/>
4654+ <source>%1 bytes/sec</source>
4655+ <translation>%1 байта/�ек</translation>
4656+ </message>
4657+</context>
4658+<context>
4659+ <name>FileChooser</name>
4660+ <message>
4661+ <location filename="../filechooser.cpp" line="54"/>
4662+ <source>Click to select a file or folder</source>
4663+ <translation>Кликнете, за да изберете файл или папка</translation>
4664+ </message>
4665+</context>
4666+<context>
4667+ <name>RecordingDelegate</name>
4668+ <message>
4669+ <location filename="../recordingdialog.cpp" line="124"/>
4670+ <source>Canceled</source>
4671+ <translation>Отказан</translation>
4672+ </message>
4673+ <message>
4674+ <location filename="../recordingdialog.cpp" line="124"/>
4675+ <source>Error</source>
4676+ <translation>Грешка</translation>
4677+ </message>
4678+ <message>
4679+ <location filename="../recordingdialog.cpp" line="154"/>
4680+ <source>%1 MB</source>
4681+ <translation>%1 МБ</translation>
4682+ </message>
4683+ <message>
4684+ <location filename="../recordingdialog.cpp" line="158"/>
4685+ <source>%1 KB</source>
4686+ <translation>%1 КБ</translation>
4687+ </message>
4688+ <message>
4689+ <location filename="../recordingdialog.cpp" line="162"/>
4690+ <source>%1 bytes</source>
4691+ <translation>%1 байта</translation>
4692+ </message>
4693+</context>
4694+<context>
4695+ <name>RecordingDialog</name>
4696+ <message>
4697+ <location filename="../recordingdialog.cpp" line="207"/>
4698+ <location filename="../recordingdialog.cpp" line="477"/>
4699+ <source>Recordings</source>
4700+ <translation>Запи�и</translation>
4701+ </message>
4702+ <message>
4703+ <location filename="../recordingdialog.cpp" line="208"/>
4704+ <source>&amp;Clear list</source>
4705+ <translation>&amp;Изчи�ти �пи�ъка</translation>
4706+ </message>
4707+ <message>
4708+ <location filename="../recordingdialog.cpp" line="209"/>
4709+ <location filename="../recordingdialog.cpp" line="606"/>
4710+ <source>&amp;Open folder</source>
4711+ <translation>&amp;Отвори папка</translation>
4712+ </message>
4713+ <message>
4714+ <location filename="../recordingdialog.cpp" line="301"/>
4715+ <location filename="../recordingdialog.cpp" line="313"/>
4716+ <location filename="../recordingdialog.cpp" line="722"/>
4717+ <source>There was an error in retrieving the download URL.</source>
4718+ <translation>Възникна грешка в отговора на адре�а за �вал�не.</translation>
4719+ </message>
4720+ <message>
4721+ <location filename="../recordingdialog.cpp" line="301"/>
4722+ <location filename="../recordingdialog.cpp" line="313"/>
4723+ <location filename="../recordingdialog.cpp" line="722"/>
4724+ <source>Recording failed</source>
4725+ <translation>Запи�ването е неу�пешно</translation>
4726+ </message>
4727+ <message>
4728+ <location filename="../recordingdialog.cpp" line="364"/>
4729+ <location filename="../recordingdialog.cpp" line="740"/>
4730+ <source>Starting</source>
4731+ <translation>�ачало</translation>
4732+ </message>
4733+ <message>
4734+ <location filename="../recordingdialog.cpp" line="398"/>
4735+ <source>Error</source>
4736+ <translation>Грешка</translation>
4737+ </message>
4738+ <message>
4739+ <location filename="../recordingdialog.cpp" line="402"/>
4740+ <source>Completed</source>
4741+ <translation>Завършено</translation>
4742+ </message>
4743+ <message numerus="yes">
4744+ <location filename="../recordingdialog.cpp" line="481"/>
4745+ <source>%1% of %n video - Recordings</source>
4746+ <translation><numerusform>%1% от %n видеота - Запи�ан</numerusform><numerusform>%1% от %n видеа - Запи�ани</numerusform></translation>
4747+ </message>
4748+ <message>
4749+ <location filename="../recordingdialog.cpp" line="566"/>
4750+ <source>&amp;Cancel</source>
4751+ <translation>&amp;Отказ</translation>
4752+ </message>
4753+ <message>
4754+ <location filename="../recordingdialog.cpp" line="568"/>
4755+ <source>&amp;Remove from list</source>
4756+ <translation>&amp;Премахни от �пи�ък</translation>
4757+ </message>
4758+ <message>
4759+ <location filename="../recordingdialog.cpp" line="587"/>
4760+ <location filename="../recordingdialog.cpp" line="609"/>
4761+ <source>Remove from &amp;list</source>
4762+ <translation>Премахване от &amp;�пи�ъка</translation>
4763+ </message>
4764+ <message>
4765+ <location filename="../recordingdialog.cpp" line="585"/>
4766+ <source>&amp;Retry</source>
4767+ <translation>&amp;Опитай пак</translation>
4768+ </message>
4769+ <message>
4770+ <location filename="../recordingdialog.cpp" line="605"/>
4771+ <source>&amp;Play</source>
4772+ <translation>&amp;Възпроизвеждане</translation>
4773+ </message>
4774+ <message>
4775+ <location filename="../recordingdialog.cpp" line="608"/>
4776+ <source>&amp;Delete</source>
4777+ <translation>&amp;Изтриване</translation>
4778+ </message>
4779+ <message>
4780+ <location filename="../recordingdialog.cpp" line="687"/>
4781+ <source>Fetching URL...</source>
4782+ <translation>Извличане на Интернет адре�...</translation>
4783+ </message>
4784+ <message>
4785+ <location filename="../recordingdialog.cpp" line="704"/>
4786+ <source>File error</source>
4787+ <translation>Грешка във файла</translation>
4788+ </message>
4789+ <message>
4790+ <location filename="../recordingdialog.cpp" line="705"/>
4791+ <source>The file does not exists, would you like to remove it from the list?</source>
4792+ <translation>Файлът не �ъще�твува, и�кате ли да го премахнете от �пи�ъка?</translation>
4793+ </message>
4794+</context>
4795+<context>
4796+ <name>Regions</name>
4797+ <message>
4798+ <location filename="../regions.cpp" line="26"/>
4799 <source>Argentina</source>
4800 <translation>�ржентина</translation>
4801 </message>
4802 <message>
4803- <location filename="../configdialog.cpp" line="32"/>
4804+ <location filename="../regions.cpp" line="27"/>
4805 <source>Australia</source>
4806 <translation>�в�трали�</translation>
4807 </message>
4808 <message>
4809- <location filename="../configdialog.cpp" line="34"/>
4810+ <location filename="../regions.cpp" line="29"/>
4811 <source>Belgium</source>
4812 <translation>Белги�</translation>
4813 </message>
4814 <message>
4815- <location filename="../configdialog.cpp" line="35"/>
4816+ <location filename="../regions.cpp" line="30"/>
4817 <source>Brazil</source>
4818 <translation>Бразили�</translation>
4819 </message>
4820 <message>
4821- <location filename="../configdialog.cpp" line="36"/>
4822+ <location filename="../regions.cpp" line="31"/>
4823 <source>Canada</source>
4824 <translation>Канада</translation>
4825 </message>
4826 <message>
4827- <location filename="../configdialog.cpp" line="37"/>
4828+ <location filename="../regions.cpp" line="32"/>
4829 <source>Chile</source>
4830 <translation>Чили</translation>
4831 </message>
4832 <message>
4833- <location filename="../configdialog.cpp" line="38"/>
4834+ <location filename="../regions.cpp" line="33"/>
4835 <source>Colombia</source>
4836 <translation>Колумби�</translation>
4837 </message>
4838 <message>
4839- <location filename="../configdialog.cpp" line="39"/>
4840+ <location filename="../regions.cpp" line="34"/>
4841 <source>Czech Republic</source>
4842- <translation>Чешка Република</translation>
4843+ <translation>Чехи�</translation>
4844 </message>
4845 <message>
4846- <location filename="../configdialog.cpp" line="40"/>
4847+ <location filename="../regions.cpp" line="35"/>
4848 <source>Egypt</source>
4849 <translation>Египет</translation>
4850 </message>
4851 <message>
4852- <location filename="../configdialog.cpp" line="41"/>
4853+ <location filename="../regions.cpp" line="36"/>
4854 <source>France</source>
4855 <translation>Франци�</translation>
4856 </message>
4857 <message>
4858- <location filename="../configdialog.cpp" line="42"/>
4859+ <location filename="../regions.cpp" line="37"/>
4860 <source>Germany</source>
4861 <translation>Германи�</translation>
4862 </message>
4863 <message>
4864- <location filename="../configdialog.cpp" line="43"/>
4865+ <location filename="../regions.cpp" line="38"/>
4866 <source>Great Britain</source>
4867- <translation>Велико-британи�</translation>
4868+ <translation>Великобритани�</translation>
4869 </message>
4870 <message>
4871- <location filename="../configdialog.cpp" line="44"/>
4872+ <location filename="../regions.cpp" line="39"/>
4873 <source>Hong Kong</source>
4874 <translation>Хонг Конг</translation>
4875 </message>
4876 <message>
4877- <location filename="../configdialog.cpp" line="45"/>
4878+ <location filename="../regions.cpp" line="40"/>
4879 <source>Hungary</source>
4880 <translation>Унгари�</translation>
4881 </message>
4882 <message>
4883- <location filename="../configdialog.cpp" line="46"/>
4884+ <location filename="../regions.cpp" line="41"/>
4885 <source>India</source>
4886 <translation>Инди�</translation>
4887 </message>
4888 <message>
4889- <location filename="../configdialog.cpp" line="47"/>
4890+ <location filename="../regions.cpp" line="42"/>
4891 <source>Ireland</source>
4892 <translation>Ирланди�</translation>
4893 </message>
4894 <message>
4895- <location filename="../configdialog.cpp" line="48"/>
4896+ <location filename="../regions.cpp" line="43"/>
4897 <source>Israel</source>
4898 <translation>Израел</translation>
4899 </message>
4900 <message>
4901- <location filename="../configdialog.cpp" line="49"/>
4902+ <location filename="../regions.cpp" line="44"/>
4903 <source>Italy</source>
4904 <translation>Итали�</translation>
4905 </message>
4906 <message>
4907- <location filename="../configdialog.cpp" line="50"/>
4908+ <location filename="../regions.cpp" line="45"/>
4909 <source>Japan</source>
4910 <translation>Япони�</translation>
4911 </message>
4912 <message>
4913- <location filename="../configdialog.cpp" line="52"/>
4914+ <location filename="../regions.cpp" line="46"/>
4915 <source>Jordan</source>
4916 <translation>Йордани�</translation>
4917 </message>
4918 <message>
4919- <location filename="../configdialog.cpp" line="53"/>
4920+ <location filename="../regions.cpp" line="47"/>
4921 <source>Malaysia</source>
4922- <translation>Мала-ази�</translation>
4923+ <translation>Малайзи�</translation>
4924 </message>
4925 <message>
4926- <location filename="../configdialog.cpp" line="54"/>
4927+ <location filename="../regions.cpp" line="48"/>
4928 <source>Mexico</source>
4929 <translation>Мек�ико</translation>
4930 </message>
4931 <message>
4932- <location filename="../configdialog.cpp" line="55"/>
4933+ <location filename="../regions.cpp" line="49"/>
4934 <source>Morocco</source>
4935 <translation>Мароко</translation>
4936 </message>
4937 <message>
4938- <location filename="../configdialog.cpp" line="56"/>
4939+ <location filename="../regions.cpp" line="50"/>
4940 <source>Netherlands</source>
4941- <translation>�идерланди�</translation>
4942+ <translation>Холанди�</translation>
4943 </message>
4944 <message>
4945- <location filename="../configdialog.cpp" line="57"/>
4946+ <location filename="../regions.cpp" line="51"/>
4947 <source>New Zealand</source>
4948 <translation>�ова Зеланди�</translation>
4949 </message>
4950 <message>
4951- <location filename="../configdialog.cpp" line="58"/>
4952+ <location filename="../regions.cpp" line="52"/>
4953 <source>Peru</source>
4954 <translation>Перу</translation>
4955 </message>
4956 <message>
4957- <location filename="../configdialog.cpp" line="59"/>
4958+ <location filename="../regions.cpp" line="53"/>
4959 <source>Philippines</source>
4960- <translation>Филипините</translation>
4961+ <translation>Филипини</translation>
4962 </message>
4963 <message>
4964- <location filename="../configdialog.cpp" line="60"/>
4965+ <location filename="../regions.cpp" line="54"/>
4966 <source>Poland</source>
4967 <translation>Полша</translation>
4968 </message>
4969 <message>
4970- <location filename="../configdialog.cpp" line="61"/>
4971+ <location filename="../regions.cpp" line="55"/>
4972 <source>Russia</source>
4973 <translation>Ру�и�</translation>
4974 </message>
4975 <message>
4976- <location filename="../configdialog.cpp" line="62"/>
4977+ <location filename="../regions.cpp" line="56"/>
4978 <source>Saudi Arabia</source>
4979 <translation>Саудит�ка �раби�</translation>
4980 </message>
4981 <message>
4982- <location filename="../configdialog.cpp" line="63"/>
4983+ <location filename="../regions.cpp" line="57"/>
4984 <source>Singapore</source>
4985 <translation>Сингапур</translation>
4986 </message>
4987 <message>
4988- <location filename="../configdialog.cpp" line="64"/>
4989+ <location filename="../regions.cpp" line="58"/>
4990 <source>South Africa</source>
4991 <translation>Южна �фрика</translation>
4992 </message>
4993 <message>
4994- <location filename="../configdialog.cpp" line="65"/>
4995+ <location filename="../regions.cpp" line="59"/>
4996 <source>South Korea</source>
4997 <translation>Южна Коре�</translation>
4998 </message>
4999 <message>
5000- <location filename="../configdialog.cpp" line="66"/>
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: