Merge lp:~alivema4ever/ubuntu/trusty/smtube/lp-1350406-fix into lp:ubuntu/trusty/smtube
- Trusty (14.04)
- lp-1350406-fix
- Merge into trusty
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 | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Jamie Strandboge | Disapprove | ||
Review via email: mp+228885@code.launchpad.net |
Commit message
Description of the change
Built for use with smplayer 14.3.0
To post a comment you must log in.
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' |
246 | Binary 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' |
320 | Binary 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' |
345 | Binary 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' |
455 | Binary 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' |
472 | Binary 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' |
475 | Binary 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' |
478 | Binary 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' |
480 | Binary 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' |
482 | Binary 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' |
484 | Binary 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' |
486 | Binary 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' |
488 | Binary 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>© 2012-2013 Ricardo Villalba <rvm@users.sourceforge.net>" + |
504 | + "<p>© 2012-2014 Ricardo Villalba <rvm@users.sourceforge.net>" + |
505 | "<br>" + tr("Based on UMPlayer") + " © 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("<", "<").replace(">", ">"); |
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>&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>&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' |
1082 | Binary 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' |
1084 | Binary 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' |
1086 | Binary 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' |
1088 | Binary 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' |
1090 | Binary 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' |
1092 | Binary 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' |
1094 | Binary 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' |
1096 | Binary 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' |
1098 | Binary 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' |
1100 | Binary 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' |
1102 | Binary 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' |
1104 | Binary 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>&Info</source> |
3177 | + <translation>م&علومات</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>&Translators</source> |
3189 | + <translation>المت&رجمون</translation> |
3190 | + </message> |
3191 | + <message> |
3192 | + <location filename="../about.ui" line="145"/> |
3193 | + <source>&License</source> |
3194 | + <translation>الر&خصة</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'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><b>%1</b> (%2)</source> |
3454 | + <translation><b>%1</b> (%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:<br>%1</source> |
3503 | + <translation>وقع خطأ عند تنزيل المل�:<br>%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>&Save to this folder</source> |
3521 | + <translation>اØÙ�&ظ الى هذا المجلد</translation> |
3522 | + </message> |
3523 | + <message> |
3524 | + <location filename="../configdialog.ui" line="45"/> |
3525 | + <source>&Quality</source> |
3526 | + <translation>الن&وعية</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>&Region:</source> |
3536 | + <translation>المن&طقة:</translation> |
3537 | + </message> |
3538 | + <message> |
3539 | + <location filename="../configdialog.ui" line="189"/> |
3540 | + <source>Period of &time:</source> |
3541 | + <translation>ال�ترة ال&زمنية:</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&uality:</source> |
3551 | + <translation>ال&نوعية:</translation> |
3552 | + </message> |
3553 | + <message> |
3554 | + <location filename="../configdialog.ui" line="125"/> |
3555 | + <source>&Player:</source> |
3556 | + <translation>المشغ&ل:</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>&Clear list</source> |
3689 | + <translation>Ù…Ø³Ø Ø§Ù„&قائمة</translation> |
3690 | + </message> |
3691 | + <message> |
3692 | + <location filename="../recordingdialog.cpp" line="209"/> |
3693 | + <location filename="../recordingdialog.cpp" line="606"/> |
3694 | + <source>&Open folder</source> |
3695 | + <translation>Ù�&ØªØ Ø§Ù„Ù…Ø¬Ù„Ø¯</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>&Cancel</source> |
3742 | + <translation>أل&غ�</translation> |
3743 | + </message> |
3744 | + <message> |
3745 | + <location filename="../recordingdialog.cpp" line="568"/> |
3746 | + <source>&Remove from list</source> |
3747 | + <translation>أز&ل من القائمة</translation> |
3748 | + </message> |
3749 | + <message> |
3750 | + <location filename="../recordingdialog.cpp" line="587"/> |
3751 | + <location filename="../recordingdialog.cpp" line="609"/> |
3752 | + <source>Remove from &list</source> |
3753 | + <translation>أزل من الق&ائمة</translation> |
3754 | + </message> |
3755 | + <message> |
3756 | + <location filename="../recordingdialog.cpp" line="585"/> |
3757 | + <source>&Retry</source> |
3758 | + <translation>أعد المØاول&Ø©</translation> |
3759 | + </message> |
3760 | + <message> |
3761 | + <location filename="../recordingdialog.cpp" line="605"/> |
3762 | + <source>&Play</source> |
3763 | + <translation>تش&غيل</translation> |
3764 | + </message> |
3765 | + <message> |
3766 | + <location filename="../recordingdialog.cpp" line="608"/> |
3767 | + <source>&Delete</source> |
3768 | + <translation>ØØ°&Ù�</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&ecord audio</source> |
4042 | + <translation type="unfinished"></translation> |
4043 | + </message> |
4044 | + <message> |
4045 | + <location filename="../ytdialog.cpp" line="739"/> |
4046 | + <source>&Add URL to the SMPlayer playlist</source> |
4047 | + <translation>أض� ال&رابط الى قائمة تشغيل 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 '%1' can't be played or recorded.</source> |
4064 | + <translation>نأس�، نظرا لتغييرات �ي يوتيوب Youtube، لا يمكن تشغيل ال�يديو '%1' أو تسجيله.</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 "%1"</source> |
4074 | + <translation>نتائج يوتيوب YouTube%2 لـ "%1"</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 "%1"</source> |
4104 | + <translation>لم ي�عثَر على �يديوات لـ "%1"</translation> |
4105 | + </message> |
4106 | + <message> |
4107 | + <location filename="../ytdialog.cpp" line="733"/> |
4108 | + <source>&Play video</source> |
4109 | + <translation>تش&غيل ال�يديو</translation> |
4110 | + </message> |
4111 | + <message> |
4112 | + <location filename="../ytdialog.cpp" line="734"/> |
4113 | + <source>&Record video</source> |
4114 | + <translation>تس&جيل ال�يديو</translation> |
4115 | + </message> |
4116 | + <message> |
4117 | + <location filename="../ytdialog.cpp" line="736"/> |
4118 | + <source>&Watch on YouTube</source> |
4119 | + <translation>م&شاهدة على YouTube</translation> |
4120 | + </message> |
4121 | + <message> |
4122 | + <location filename="../ytdialog.cpp" line="737"/> |
4123 | + <source>&Copy link</source> |
4124 | + <translation>ن&سخ الرابط</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'ko</source> |
4413 | + <translation>�'ко</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><b>%1</b> (%2)</source> |
4448 | <translation><b>%1</b> (%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>&Youtube</source> |
4458 | - <translation type="obsolete">&Youtube</translation> |
4459 | - </message> |
4460 | - <message> |
4461 | - <source>Founded in February 2005, YouTube&trade; is the world's most popular online video community, allowing millions of people to discover, watch and share originally-created videos. YouTube&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:<br>%1</source> |
4519 | - <translation>Възникна грешка при �вал�нето на: <br>%1</translation> |
4520 | + <translation>Възникна грешка при изтегл�нето на:<br>%1</translation> |
4521 | </message> |
4522 | </context> |
4523 | <context> |
4524 | @@ -272,7 +353,7 @@ |
4525 | <message> |
4526 | <location filename="../configdialog.ui" line="28"/> |
4527 | <source>&Save to this folder</source> |
4528 | - <translation>&Запиши в тази директорич</translation> |
4529 | + <translation>&Запиши в тази директори�</translation> |
4530 | </message> |
4531 | <message> |
4532 | <location filename="../configdialog.ui" line="45"/> |
4533 | @@ -280,598 +361,610 @@ |
4534 | <translation>&Каче�тво</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>&Region:</source> |
4547 | <translation>&Регион:</translation> |
4548 | </message> |
4549 | <message> |
4550 | - <location filename="../configdialog.ui" line="181"/> |
4551 | + <location filename="../configdialog.ui" line="189"/> |
4552 | <source>Period of &time:</source> |
4553 | <translation>Период от &време:</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&uality:</source> |
4564 | - <translation>К&аче�тво</translation> |
4565 | + <translation>К&аче�тво:</translation> |
4566 | </message> |
4567 | <message> |
4568 | - <location filename="../configdialog.ui" line="118"/> |
4569 | + <location filename="../configdialog.ui" line="125"/> |
4570 | <source>&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>&Clear list</source> |
4705 | + <translation>&Изчи�ти �пи�ъка</translation> |
4706 | + </message> |
4707 | + <message> |
4708 | + <location filename="../recordingdialog.cpp" line="209"/> |
4709 | + <location filename="../recordingdialog.cpp" line="606"/> |
4710 | + <source>&Open folder</source> |
4711 | + <translation>&Отвори папка</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>&Cancel</source> |
4751 | + <translation>&Отказ</translation> |
4752 | + </message> |
4753 | + <message> |
4754 | + <location filename="../recordingdialog.cpp" line="568"/> |
4755 | + <source>&Remove from list</source> |
4756 | + <translation>&Премахни от �пи�ък</translation> |
4757 | + </message> |
4758 | + <message> |
4759 | + <location filename="../recordingdialog.cpp" line="587"/> |
4760 | + <location filename="../recordingdialog.cpp" line="609"/> |
4761 | + <source>Remove from &list</source> |
4762 | + <translation>Премахване от &�пи�ъка</translation> |
4763 | + </message> |
4764 | + <message> |
4765 | + <location filename="../recordingdialog.cpp" line="585"/> |
4766 | + <source>&Retry</source> |
4767 | + <translation>&Опитай пак</translation> |
4768 | + </message> |
4769 | + <message> |
4770 | + <location filename="../recordingdialog.cpp" line="605"/> |
4771 | + <source>&Play</source> |
4772 | + <translation>&Възпроизвеждане</translation> |
4773 | + </message> |
4774 | + <message> |
4775 | + <location filename="../recordingdialog.cpp" line="608"/> |
4776 | + <source>&Delete</source> |
4777 | + <translation>&Изтриване</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.
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/StableRelea seUpdates. This would be better served to include in trusty-backports. See https:/ /help.ubuntu. com/community/ UbuntuBackports.