Compare commits
666 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
1ff6cfa31f | ||
|
cd8e187bfe | ||
|
33a3ec4c4c | ||
|
f9c623d654 | ||
|
283a3bd216 | ||
|
a8513d41ea | ||
|
b8394003e8 | ||
|
ae1095217c | ||
|
e159698bfd | ||
|
cd07bd4f71 | ||
|
825903f294 | ||
|
a5596e0288 | ||
|
53c9d0fcde | ||
|
277c8c4275 | ||
|
3d28293250 | ||
|
3df2c2a104 | ||
|
65b2f42463 | ||
|
0e7fae2b5a | ||
|
afbe74bc13 | ||
|
ae32b0b368 | ||
|
7d2c284a3e | ||
|
198ad22f09 | ||
|
f9af1e0520 | ||
|
f2e76803cc | ||
|
a11ec10748 | ||
|
a887232fff | ||
|
7e249b91d8 | ||
|
83b3758a25 | ||
|
9313de5b17 | ||
|
99a298edb5 | ||
|
65405682aa | ||
|
d32e177583 | ||
|
4db7228d0c | ||
|
56ddbfe93d | ||
|
4f24e9c5f8 | ||
|
9b7db84a9e | ||
|
e7aa846a0f | ||
|
0aa07d62fd | ||
|
5449154ee9 | ||
|
2dc94021e2 | ||
|
33a237086c | ||
|
aff34a9dc5 | ||
|
15f5212fa0 | ||
|
add8515111 | ||
|
37367bc5da | ||
|
9ec9901e14 | ||
|
1fb0af1d97 | ||
|
989243914c | ||
|
7d8e29a932 | ||
|
001c42f19f | ||
|
d871762897 | ||
|
c5bfb4827d | ||
|
6dd1952ad3 | ||
|
28e18b66a6 | ||
|
99c61d1731 | ||
|
65835fc2b2 | ||
|
4732db07d1 | ||
|
67763df201 | ||
|
1ef2be9f3c | ||
|
3b148c66ad | ||
|
968bee2a62 | ||
|
a7a4b97df8 | ||
|
999b9bae22 | ||
|
e6bb2877ee | ||
|
e367e49039 | ||
|
47a92664df | ||
|
29b0b4e431 | ||
|
9ca97d2e1a | ||
|
50267afe06 | ||
|
3766edcc43 | ||
|
51b39b5302 | ||
|
35fdb26b77 | ||
|
74d52e3208 | ||
|
db4437cf62 | ||
|
b766f6808f | ||
|
dce31156db | ||
|
637ec28ab1 | ||
|
f15dd8153f | ||
|
aa68229ac6 | ||
|
5e6751dc64 | ||
|
aff075f2ad | ||
|
7baf43e3d7 | ||
|
b43fe66409 | ||
|
809d1139d4 | ||
|
009be45dc3 | ||
|
7d90bc7426 | ||
|
bb0e7e7631 | ||
|
01c5012028 | ||
|
b9f7bf2656 | ||
|
70b0203acd | ||
|
1245ae7ac2 | ||
|
eda6f8ff8f | ||
|
4bef594b53 | ||
|
a72ef2bf6e | ||
|
1d6697f11d | ||
|
6be91dd558 | ||
|
dc34262445 | ||
|
bb1a06a636 | ||
|
1fa1ed42e9 | ||
|
fe15fcd1f5 | ||
|
7169aa352e | ||
|
4da0b72ded | ||
|
7a4a2f5b70 | ||
|
744f31bb45 | ||
|
53f812ed42 | ||
|
91525bf5d9 | ||
|
595d0cf987 | ||
|
78d867b16f | ||
|
2a061b5bf1 | ||
|
11f7f4a25e | ||
|
a9c0d5f820 | ||
|
c99fff2b16 | ||
|
eda5893012 | ||
|
0e6c79b921 | ||
|
c8ba2ee171 | ||
|
206c212767 | ||
|
b0d01ec0fb | ||
|
d7100c0e8e | ||
|
6d82ae0c4d | ||
|
649d30e11b | ||
|
f36cf0e5fa | ||
|
e0b406e7ef | ||
|
ca65bb2ccc | ||
|
3a890ee929 | ||
|
c7333a2f1f | ||
|
0dd29ffa3d | ||
|
503de73c7f | ||
|
5377ff718d | ||
|
caef0ccdbd | ||
|
9e901dba2d | ||
|
291035db9c | ||
|
a065480f75 | ||
|
3fa64c76ee | ||
|
554a688077 | ||
|
c1f043d2d1 | ||
|
bc3662a997 | ||
|
d3ab32d06a | ||
|
c36373569a | ||
|
3dbc426954 | ||
|
4415aa59f8 | ||
|
6fdec28f50 | ||
|
ef2514e95c | ||
|
27480f8cdb | ||
|
fbcfb552ad | ||
|
25012ecc26 | ||
|
c29ce585a5 | ||
|
3af34a8581 | ||
|
9ec284bfa5 | ||
|
585bfcdc49 | ||
|
339710c86a | ||
|
fc43a6a851 | ||
|
4b2c6e8d89 | ||
|
6cba708640 | ||
|
a46aadd843 | ||
|
d7dd3292ff | ||
|
6b62265708 | ||
|
304981c28b | ||
|
ba0c21e111 | ||
|
023be21950 | ||
|
fb95568196 | ||
|
d9a4b718ed | ||
|
72add01e66 | ||
|
f05c58150e | ||
|
7dc1e94ae6 | ||
|
8e07eb5c55 | ||
|
44aa85b51e | ||
|
dcf1ebb70f | ||
|
0865741733 | ||
|
58c18acd01 | ||
|
4630b238bf | ||
|
f3dc1a0800 | ||
|
7df6e8c153 | ||
|
566880365a | ||
|
dd54736e76 | ||
|
2c8fac1f8c | ||
|
ce4328c0c3 | ||
|
c6a65a5ba4 | ||
|
8230e8bfac | ||
|
23ea7537e6 | ||
|
b9733249ee | ||
|
ffd5a2f81e | ||
|
eefc6fd5da | ||
|
d69b10c148 | ||
|
9fbbcb6b53 | ||
|
c6eee1324b | ||
|
b960be9d97 | ||
|
cdfd6a3464 | ||
|
4cfd039c40 | ||
|
8e4ea5e88f | ||
|
76fbe88e95 | ||
|
1759d1ea19 | ||
|
703823f553 | ||
|
aeb949aa23 | ||
|
b15d3162de | ||
|
b2deebe0c2 | ||
|
5d5b5fa3af | ||
|
f151b59431 | ||
|
c7c12eef93 | ||
|
b67623e649 | ||
|
8834bf81fa | ||
|
0877b17a58 | ||
|
7df1f7a8b8 | ||
|
453bf6206c | ||
|
4d31eac5f6 | ||
|
7feb9d5249 | ||
|
0c4746430b | ||
|
ec02854490 | ||
|
ae48c151d0 | ||
|
57dfd6b4b2 | ||
|
0e2dd37559 | ||
|
98030c9b05 | ||
|
89cec23815 | ||
|
e476251c5e | ||
|
4a3bca9bf4 | ||
|
0ad60299ef | ||
|
1d13bc2e40 | ||
|
04bff62705 | ||
|
e4893be501 | ||
|
fe762d4fc5 | ||
|
dbb7c64807 | ||
|
2fdab5c9a1 | ||
|
18628defa4 | ||
|
4a34b97e8c | ||
|
9d88c9a0f7 | ||
|
a9111267e8 | ||
|
d3eb8df91a | ||
|
f010736e0d | ||
|
9a1ac2f505 | ||
|
8c3ea50301 | ||
|
5fd8e2181d | ||
|
92efd0da7f | ||
|
326b75aefe | ||
|
5e4b5fa0d0 | ||
|
8f4ea6d95d | ||
|
d803a36915 | ||
|
12f6d1f780 | ||
|
5c58bc1d58 | ||
|
ae66fb8c5c | ||
|
4a93bb97fc | ||
|
35c3eedd93 | ||
|
ea69fe158a | ||
|
de508c049b | ||
|
cf56819b0c | ||
|
2f7d13588f | ||
|
7b2189cd6f | ||
|
37e77f4fd7 | ||
|
7ee6db41d6 | ||
|
a8e72c3b26 | ||
|
a41e84ae78 | ||
|
bf37bad98a | ||
|
374e6a0983 | ||
|
c06b5ea2f6 | ||
|
243997b06e | ||
|
d0858efd7d | ||
|
7ea0de753e | ||
|
432d6af37c | ||
|
e1943e6f64 | ||
|
e3dddea777 | ||
|
3e1d58463d | ||
|
8e51953427 | ||
|
91bdfec734 | ||
|
808901d192 | ||
|
ce60c173b7 | ||
|
9c36b32e8e | ||
|
c76fabbc2b | ||
|
75596c6744 | ||
|
ca467fb5bc | ||
|
9120f6436c | ||
|
b7649a3281 | ||
|
10ec1f4f89 | ||
|
9fdddbf04e | ||
|
0380379634 | ||
|
72bfeba65a | ||
|
4a8b851ba5 | ||
|
5fca433805 | ||
|
cb75c10390 | ||
|
b7432c8b6c | ||
|
df6dc711fc | ||
|
6a8febcdce | ||
|
ff4e52c398 | ||
|
2cf9cdab88 | ||
|
1a3cae012e | ||
|
d4ccbdfa56 | ||
|
87531a7ac9 | ||
|
0c5673ca79 | ||
|
ff7012a65d | ||
|
601b513da3 | ||
|
cf6a3c9448 | ||
|
8c78c0dc08 | ||
|
bb4b3b4faf | ||
|
4caf6d6a28 | ||
|
499f45402f | ||
|
ddedc74501 | ||
|
0526d4071d | ||
|
7555c06c0f | ||
|
55bef176d3 | ||
|
9c341bb3e6 | ||
|
41f1a562fd | ||
|
34c618ed94 | ||
|
a9e3b716f2 | ||
|
287990ca96 | ||
|
9e54917ff8 | ||
|
40d44c31d0 | ||
|
f4be7f09e6 | ||
|
794d6f870c | ||
|
8f6a567bee | ||
|
ea3171038b | ||
|
ee3fb6b47e | ||
|
b194d8c9cd | ||
|
a7308cddcc | ||
|
7f890e571d | ||
|
4a5a8e5d15 | ||
|
66b1e21f31 | ||
|
36573c2342 | ||
|
0b9822d689 | ||
|
f36b95fe6b | ||
|
1da74e4d81 | ||
|
c0ee4751a0 | ||
|
aa5fb8bc53 | ||
|
57cdd0d960 | ||
|
4ac6c32a45 | ||
|
00c122b05c | ||
|
bcf7d9d689 | ||
|
dbf31d704a | ||
|
7f4d64d8dc | ||
|
2f95e0b191 | ||
|
86ac66a258 | ||
|
f5e39c216e | ||
|
5336700050 | ||
|
bb8c60c939 | ||
|
48b2c77e6b | ||
|
900be23fa0 | ||
|
fbb9e74537 | ||
|
21abd78de5 | ||
|
0a5f9ba290 | ||
|
8d06d2ca38 | ||
|
bbe81050f3 | ||
|
751b76948e | ||
|
485b40b22b | ||
|
4c8ba931d3 | ||
|
463eb2bfd8 | ||
|
7ab0a3093e | ||
|
dabbd38cc7 | ||
|
efd7911efc | ||
|
9b8d69a21f | ||
|
b39029743e | ||
|
b771a23e23 | ||
|
ffd4ba4edf | ||
|
6bfbbce05f | ||
|
4a3f157718 | ||
|
920b239dc1 | ||
|
1a81a292fc | ||
|
066aac7e26 | ||
|
ac726faf1b | ||
|
dc5c0394f7 | ||
|
4098cc2709 | ||
|
63aa26f607 | ||
|
4238327ebc | ||
|
120ee995f1 | ||
|
7d7650f97c | ||
|
b5d5db434a | ||
|
a4a274531c | ||
|
3a1083d2b3 | ||
|
e79604b598 | ||
|
43a1b38a49 | ||
|
e83be2b9cd | ||
|
fcfc344627 | ||
|
28d34a84ad | ||
|
3bd6bd540f | ||
|
c35d7c964a | ||
|
15805aa32c | ||
|
6f14277821 | ||
|
2d66feb5b2 | ||
|
a6944c49ae | ||
|
3ad6826779 | ||
|
0e04e8970b | ||
|
76af86dc4b | ||
|
3d289c0f77 | ||
|
d7ea7e3eee | ||
|
e0b5597149 | ||
|
d7950472bc | ||
|
dd311d99c4 | ||
|
a634d09126 | ||
|
7c5d6033d4 | ||
|
18aba6856b | ||
|
51fba9ae62 | ||
|
eb7f3fdab4 | ||
|
0bfc873559 | ||
|
226f823354 | ||
|
6bb26ecde8 | ||
|
5d0c734187 | ||
|
ce7040d1fd | ||
|
7c9c046b17 | ||
|
8f0984c5ac | ||
|
5e9fa24008 | ||
|
15cdc8f910 | ||
|
dc095ec963 | ||
|
8017bcacc7 | ||
|
eaf8cad990 | ||
|
40fb61b9a9 | ||
|
11c0519165 | ||
|
25775b5051 | ||
|
3d297795c2 | ||
|
925da80431 | ||
|
1416c40172 | ||
|
c9fb103627 | ||
|
3f48e93a89 | ||
|
07d9360a65 | ||
|
c276e58c55 | ||
|
6f0321f585 | ||
|
d35fbd5048 | ||
|
75ec478cae | ||
|
bb6da0daa9 | ||
|
bf46ca7b71 | ||
|
931ed5b918 | ||
|
5d21dded5c | ||
|
e983742c9b | ||
|
c6d2a5df89 | ||
|
ee70b9e3a7 | ||
|
97986d8d3e | ||
|
39409ed861 | ||
|
1e62c117e4 | ||
|
61f9fd5c99 | ||
|
fe7c79ff31 | ||
|
de74c0c3fe | ||
|
80797d6538 | ||
|
e0c72c911a | ||
|
8f69369807 | ||
|
451713c946 | ||
|
cf01884515 | ||
|
3913611ffa | ||
|
7bff379d05 | ||
|
3769ef3208 | ||
|
10f607b348 | ||
|
62df210cdc | ||
|
bdf8a0a353 | ||
|
f380317775 | ||
|
8e99dbf01e | ||
|
0685754481 | ||
|
5429698661 | ||
|
2dad4fbe2c | ||
|
3b0292d9d9 | ||
|
f3ba4beffc | ||
|
6be00f832d | ||
|
4674ed35f0 | ||
|
26e12157f2 | ||
|
9758324128 | ||
|
bfec4043f6 | ||
|
e0cd07c442 | ||
|
cbd8caa171 | ||
|
3f4140e023 | ||
|
903617fd50 | ||
|
4abb52d198 | ||
|
1c820a2beb | ||
|
b65d9d5809 | ||
|
251599e36e | ||
|
1ecab22b4d | ||
|
a639b89ebc | ||
|
bf015d241a | ||
|
555adeaac7 | ||
|
d455270c05 | ||
|
d5266f7147 | ||
|
2ef67f5b28 | ||
|
337c4e6e9c | ||
|
1a4ed2e551 | ||
|
dca4a7c591 | ||
|
660176477a | ||
|
f2d5a9dadc | ||
|
7e45779132 | ||
|
a25d4719c9 | ||
|
69f459682a | ||
|
0f1dec1783 | ||
|
8240b8379b | ||
|
8d1f0e1646 | ||
|
59346f014a | ||
|
ef5f40864e | ||
|
69818f8c96 | ||
|
55c894743a | ||
|
3c096f16e0 | ||
|
fa7e34972c | ||
|
9d390aa0ed | ||
|
a59768ee9b | ||
|
20181affd1 | ||
|
08426e2822 | ||
|
659b8fa0d5 | ||
|
b5180f33b8 | ||
|
4006452d15 | ||
|
eb70419203 | ||
|
c0a970872b | ||
|
7caf66b086 | ||
|
7c36fb68c6 | ||
|
189f3b4aff | ||
|
ec83adcd39 | ||
|
97cf05c37c | ||
|
5112d9356b | ||
|
8f69b9b680 | ||
|
989a16db7d | ||
|
a687ca635f | ||
|
3552106e18 | ||
|
b0b266a639 | ||
|
792cf99b22 | ||
|
33ed1373e8 | ||
|
8939af7407 | ||
|
0efe65d738 | ||
|
02414e8269 | ||
|
c760d26b68 | ||
|
0abb46f3e6 | ||
|
093e960af2 | ||
|
c9c1cc5b17 | ||
|
d4adc55d67 | ||
|
3e7368bc32 | ||
|
473d8994c8 | ||
|
5615488284 | ||
|
461854d158 | ||
|
56ed1c4ace | ||
|
2805b08989 | ||
|
e2b99b2628 | ||
|
b31ff998ee | ||
|
f9dff94ab2 | ||
|
f72c60969b | ||
|
2088e78020 | ||
|
994ed90ed6 | ||
|
19acd9d47f | ||
|
541fe95789 | ||
|
570913a3b9 | ||
|
e3a22ba4ee | ||
|
c7b8acbdf6 | ||
|
1bbbf93196 | ||
|
a557324d98 | ||
|
1d28ddc3c8 | ||
|
3efe0ff22b | ||
|
d7d97d60db | ||
|
32f6a42791 | ||
|
818636721a | ||
|
64cd6e584f | ||
|
00252e4e53 | ||
|
53ea9b2589 | ||
|
3f05f4ea8b | ||
|
8a33a9edf4 | ||
|
fcce5568b2 | ||
|
6337e3a498 | ||
|
e6bb53c9f5 | ||
|
fb7f98c1fc | ||
|
be86cdd97c | ||
|
1c59840dd1 | ||
|
a306bdf53f | ||
|
46fc9cb20a | ||
|
78e064e1c5 | ||
|
f5d61a60f8 | ||
|
e8b02406d5 | ||
|
51e13ce11e | ||
|
bfda50e604 | ||
|
bef7a63732 | ||
|
80ef9d6053 | ||
|
6d4af9301c | ||
|
43c2aba4d2 | ||
|
4337a220b6 | ||
|
019499632a | ||
|
6f1d4a465e | ||
|
bc814e759f | ||
|
169917fd53 | ||
|
508bed5ef4 | ||
|
6ff43b8aed | ||
|
d4c68ddd27 | ||
|
e3daa8c2d5 | ||
|
13d758d3eb | ||
|
09be5a1a60 | ||
|
fbdf53de50 | ||
|
298d0a08a0 | ||
|
327ce84e46 | ||
|
22e2800e9e | ||
|
8c10bdfb07 | ||
|
35590c381c | ||
|
9874606929 | ||
|
9bf44b1e52 | ||
|
9d4642b453 | ||
|
5cfbcae95e | ||
|
419a0c806f | ||
|
badfe28626 | ||
|
1c43cabd7e | ||
|
efc29a1c92 | ||
|
ac7e547d1d | ||
|
5e3f465824 | ||
|
f3b9a7bdec | ||
|
c014ccdf33 | ||
|
0b2302a675 | ||
|
92805d37c1 | ||
|
5a38219754 | ||
|
112184c8fa | ||
|
6b3bb259d8 | ||
|
3da78d7cee | ||
|
3277ad7802 | ||
|
8ca84e9ba2 | ||
|
23a9be18c6 | ||
|
b392151c56 | ||
|
1ff142616e | ||
|
21479dbe0b | ||
|
24502d8856 | ||
|
bee2a7165a | ||
|
3ec9308916 | ||
|
df83239ad3 | ||
|
dd78a2097a | ||
|
3f8d27695e | ||
|
f0b1d49f6b | ||
|
8d3760f71e | ||
|
4f8165cc8a | ||
|
1021e9c1b5 | ||
|
7cac0ed9bc | ||
|
aa076684dc | ||
|
5ec7e3340b | ||
|
7742e3091a | ||
|
297161c766 | ||
|
95a335813d | ||
|
424424cf7b | ||
|
4e2c5b23f7 | ||
|
73e5828d41 | ||
|
e5bdab9f9b | ||
|
d8d88826f5 | ||
|
33a9391ee7 | ||
|
2a43c7df78 | ||
|
65c33e70f5 | ||
|
83ca3a1502 | ||
|
2e9dc42696 | ||
|
2d3f712f95 | ||
|
34d9a723dd | ||
|
c2ffbbc5ac | ||
|
95e2b84559 | ||
|
aed838193f | ||
|
6f4b43f9ff | ||
|
4619cd420a | ||
|
e5cc13ac57 | ||
|
6500af65c0 | ||
|
59452f6163 | ||
|
e130fc41ed | ||
|
7c3d0eba95 | ||
|
c98842935d | ||
|
b5b8ba5a96 | ||
|
5d03b35101 | ||
|
52b7465cf6 | ||
|
840e877456 | ||
|
89f690a9e2 | ||
|
02c1cfe14e | ||
|
86f35ae304 | ||
|
2c48983aa1 | ||
|
cfe335ff8a | ||
|
a2b6463b04 | ||
|
c1c8e1c9a7 | ||
|
c0772e5076 | ||
|
0ea35a9b3e | ||
|
345d6858ff | ||
|
c297dcaf9e | ||
|
ea6a86016a | ||
|
32c84b84bd | ||
|
c2884e696f | ||
|
0a8e0daa57 | ||
|
7a86391d7b | ||
|
98a23c6585 | ||
|
195f6921c0 | ||
|
df996769f8 | ||
|
69a01c252a | ||
|
0bac06b2c0 | ||
|
f4b4a021ee | ||
|
8cc0277cca | ||
|
09817a7836 | ||
|
fb9069320e | ||
|
ccc4db2270 |
6
.gitignore
vendored
@@ -11,4 +11,8 @@ moc_*
|
|||||||
/tomahawk
|
/tomahawk
|
||||||
thirdparty/qtweetlib/WARNING-twitter-api-keys
|
thirdparty/qtweetlib/WARNING-twitter-api-keys
|
||||||
.kdev4
|
.kdev4
|
||||||
tomahawk.kdev4
|
*.kdev4
|
||||||
|
*.kate-swp
|
||||||
|
clang/
|
||||||
|
win/
|
||||||
|
gcc/
|
||||||
|
112
CMakeLists.txt
@@ -1,5 +1,6 @@
|
|||||||
PROJECT( tomahawk )
|
PROJECT( tomahawk )
|
||||||
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
|
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
|
||||||
|
SET( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" )
|
||||||
|
|
||||||
IF( ${CMAKE_VERSION} VERSION_GREATER 2.8.3 )
|
IF( ${CMAKE_VERSION} VERSION_GREATER 2.8.3 )
|
||||||
CMAKE_POLICY(SET CMP0017 NEW)
|
CMAKE_POLICY(SET CMP0017 NEW)
|
||||||
@@ -11,41 +12,73 @@ ENDIF( ${CMAKE_VERSION} VERSION_GREATER 2.8.3 )
|
|||||||
SET( TOMAHAWK_ORGANIZATION_NAME "Tomahawk" )
|
SET( TOMAHAWK_ORGANIZATION_NAME "Tomahawk" )
|
||||||
SET( TOMAHAWK_ORGANIZATION_DOMAIN "tomahawk-player.org" )
|
SET( TOMAHAWK_ORGANIZATION_DOMAIN "tomahawk-player.org" )
|
||||||
SET( TOMAHAWK_APPLICATION_NAME "Tomahawk" )
|
SET( TOMAHAWK_APPLICATION_NAME "Tomahawk" )
|
||||||
SET( TOMAHAWK_VERSION "0.1.0" )
|
SET( TOMAHAWK_DESCRIPTION_SUMMARY "The social media player" )
|
||||||
|
|
||||||
|
SET( TOMAHAWK_VERSION_MAJOR 0 )
|
||||||
|
SET( TOMAHAWK_VERSION_MINOR 2 )
|
||||||
|
SET( TOMAHAWK_VERSION_PATCH 0 )
|
||||||
|
|
||||||
|
#SET( TOMAHAWK_VERSION_RC 0 )
|
||||||
|
|
||||||
|
|
||||||
|
# build options
|
||||||
|
option(BUILD_GUI "Build Tomahawk with GUI" ON)
|
||||||
|
option(BUILD_RELEASE "Generate TOMAHAWK_VERSION without GIT info" OFF)
|
||||||
|
|
||||||
|
# generate version string
|
||||||
|
|
||||||
|
# base string used in release and unstable builds
|
||||||
|
SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION_MAJOR}.${TOMAHAWK_VERSION_MINOR}.${TOMAHAWK_VERSION_PATCH} )
|
||||||
|
IF( TOMAHAWK_VERSION_RC )
|
||||||
|
SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION}rc${TOMAHAWK_VERSION_RC} )
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
# additional info for non-release builds
|
||||||
|
IF( NOT BUILD_RELEASE )
|
||||||
|
INCLUDE( CMakeDateStamp )
|
||||||
|
SET( TOMAHAWK_VERSION_DATE "${CMAKE_DATESTAMP_YEAR}${CMAKE_DATESTAMP_MONTH}${CMAKE_DATESTAMP_DAY}" )
|
||||||
|
IF( ${TOMAHAWK_VERSION_DATE} GREATER 0)
|
||||||
|
SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION}.${TOMAHAWK_VERSION_DATE} )
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
INCLUDE( CMakeVersionSource )
|
||||||
|
IF( CMAKE_VERSION_SOURCE )
|
||||||
|
SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION}-${CMAKE_VERSION_SOURCE} )
|
||||||
|
ENDIF()
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# set paths
|
# set paths
|
||||||
SET( CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/CMakeModules" )
|
|
||||||
SET( THIRDPARTY_DIR ${CMAKE_SOURCE_DIR}/thirdparty )
|
SET( THIRDPARTY_DIR ${CMAKE_SOURCE_DIR}/thirdparty )
|
||||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
|
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
|
||||||
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
|
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
|
||||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
|
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
|
||||||
|
|
||||||
# Check if we need qtgui:
|
# installer creation
|
||||||
IF( "${gui}" STREQUAL "no" )
|
INCLUDE( TomahawkCPack.cmake )
|
||||||
ADD_DEFINITIONS( -DENABLE_HEADLESS )
|
|
||||||
MESSAGE( STATUS "Building in HEADLESS mode ***" )
|
|
||||||
FIND_PACKAGE( Qt4 4.7.0 COMPONENTS QtCore QtXml QtNetwork REQUIRED )
|
|
||||||
ELSE()
|
|
||||||
MESSAGE( STATUS "Building full GUI version ***" )
|
|
||||||
FIND_PACKAGE( Qt4 4.7.0 COMPONENTS QtGui QtCore QtXml QtNetwork REQUIRED )
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
#deps
|
#deps
|
||||||
INCLUDE( MacroOptionalFindPackage )
|
INCLUDE( MacroOptionalFindPackage )
|
||||||
INCLUDE( MacroLogFeature )
|
INCLUDE( MacroLogFeature )
|
||||||
|
|
||||||
# required
|
# Check if we need qtgui:
|
||||||
#While we distribute our own liblastfm2, don't need to look for it
|
SET(NEEDED_QT4_COMPONENTS QtCore QtXml QtNetwork )
|
||||||
#macro_optional_find_package(LibLastFm 0.3.3)
|
IF( NOT BUILD_GUI )
|
||||||
#macro_log_feature(LIBLASTFM_FOUND "LastFm" "Qt library for the Last.fm webservices" "https://github.com/mxcl/liblastfm" FALSE "" "liblastfm is needed for scrobbling tracks to Last.fm and fetching cover artwork")
|
ADD_DEFINITIONS( -DENABLE_HEADLESS )
|
||||||
set(LIBLASTFM_FOUND true)
|
MESSAGE( STATUS "Building Tomahawk ${TOMAHAWK_VERSION} in HEADLESS mode ***" )
|
||||||
|
ELSE()
|
||||||
|
MESSAGE( STATUS "Building Tomahawk ${TOMAHAWK_VERSION} full GUI version ***" )
|
||||||
|
LIST(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" )
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
find_package(Phonon REQUIRED)
|
macro_optional_find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} )
|
||||||
if(PHONON_VERSION STRLESS "4.5.0")
|
macro_log_feature(QT4_FOUND "Qt" "A cross-platform application and UI framework" "http://qt.nokia.com" TRUE "" "If you see this, although libqt4-devel is installed, check whether \n the qtwebkit-devel package is installed as well")
|
||||||
message(FATAL_ERROR "Phonon version 4.5.0 or higher is required, you have version ${PHONON_VERSION}")
|
|
||||||
else()
|
macro_optional_find_package(Phonon 4.5.0)
|
||||||
message(STATUS "Phonon found; ensure that phonon-vlc is at least 0.4")
|
macro_log_feature(PHONON_FOUND "Phonon" "The Phonon multimedia library" "http://phonon.kde.org" TRUE "" "")
|
||||||
|
if(PHONON_FOUND)
|
||||||
|
message(STATUS "Phonon found; ensure that phonon-vlc is at least 0.4")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
macro_optional_find_package(LibEchonest 1.1.7)
|
macro_optional_find_package(LibEchonest 1.1.7)
|
||||||
@@ -59,6 +92,20 @@ macro_log_feature(QJSON_FOUND "QJson" "Qt library that maps JSON data to QVarian
|
|||||||
|
|
||||||
macro_optional_find_package(Taglib 1.6.0)
|
macro_optional_find_package(Taglib 1.6.0)
|
||||||
macro_log_feature(TAGLIB_FOUND "TagLib" "Audio Meta-Data Library" "http://developer.kde.org/~wheeler/taglib.html" TRUE "" "taglib is needed for reading meta data from audio files")
|
macro_log_feature(TAGLIB_FOUND "TagLib" "Audio Meta-Data Library" "http://developer.kde.org/~wheeler/taglib.html" TRUE "" "taglib is needed for reading meta data from audio files")
|
||||||
|
include( CheckTagLibFileName )
|
||||||
|
check_taglib_filename( COMPLEX_TAGLIB_FILENAME )
|
||||||
|
|
||||||
|
macro_optional_find_package(Boost)
|
||||||
|
macro_log_feature(Boost_FOUND "Boost" "Provides free peer-reviewed portable C++ source libraries" "http://www.boost.org" TRUE "" "") #FIXME: give useful explaination
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# required
|
||||||
|
#While we distribute our own liblastfm2, don't need to look for it
|
||||||
|
#macro_optional_find_package(LibLastFm 0.3.3)
|
||||||
|
#macro_log_feature(LIBLASTFM_FOUND "LastFm" "Qt library for the Last.fm webservices" "https://github.com/mxcl/liblastfm" FALSE "" "liblastfm is needed for scrobbling tracks to Last.fm and fetching cover artwork")
|
||||||
|
set(LIBLASTFM_FOUND true)
|
||||||
|
|
||||||
|
|
||||||
# this installs headers and such and should really be handled in a separate package by packagers
|
# this installs headers and such and should really be handled in a separate package by packagers
|
||||||
IF( INTERNAL_JREEN )
|
IF( INTERNAL_JREEN )
|
||||||
@@ -71,7 +118,7 @@ IF( INTERNAL_JREEN )
|
|||||||
ELSE( INTERNAL_JREEN )
|
ELSE( INTERNAL_JREEN )
|
||||||
macro_optional_find_package(Jreen)
|
macro_optional_find_package(Jreen)
|
||||||
ENDIF( INTERNAL_JREEN )
|
ENDIF( INTERNAL_JREEN )
|
||||||
macro_log_feature(LIBJREEN_FOUND "Jreen" "Qt XMPP Library" "http://gitorious.org/jreen/jreen" FALSE "" "Jreen is needed for the Jabber SIP plugin. \n\n Use -DINTERNAL_JREEN=ON to build the git submodule inside Tomahawk \n Be aware this installs a full jreen with headers and everything!\n")
|
macro_log_feature(LIBJREEN_FOUND "Jreen" "Qt XMPP Library" "https://github.com/euroelessar/jreen" FALSE "" "Jreen is needed for the Jabber SIP plugin. \n\n Use -DINTERNAL_JREEN=ON to build the git submodule inside Tomahawk \n Be aware this installs a full jreen with headers and everything!\n")
|
||||||
|
|
||||||
# this installs headers and such and should really be handled in a separate package by packagers
|
# this installs headers and such and should really be handled in a separate package by packagers
|
||||||
IF( INTERNAL_QTWEETLIB )
|
IF( INTERNAL_QTWEETLIB )
|
||||||
@@ -95,10 +142,16 @@ SET( LIBPORTFWD_LIBRARIES ${LIBPORTFWD_LIBRARY} )
|
|||||||
ADD_SUBDIRECTORY( ${THIRDPARTY_DIR}/libportfwd )
|
ADD_SUBDIRECTORY( ${THIRDPARTY_DIR}/libportfwd )
|
||||||
|
|
||||||
# we need pthreads too
|
# we need pthreads too
|
||||||
find_package(Threads)
|
macro_optional_find_package(Threads)
|
||||||
|
macro_log_feature(THREADS_FOUND "Threads" "Threading Library" "" TRUE "" "Platform specific library for threading")
|
||||||
|
|
||||||
find_package(KDE4Installed)
|
macro_optional_find_package(KDE4)
|
||||||
find_package(KDE4)
|
macro_optional_find_package(KDE4Installed)
|
||||||
|
|
||||||
|
# this was used before we had FindKDE4Installed, just leaving it here to keep the flags
|
||||||
|
# for future kde integration
|
||||||
|
|
||||||
|
# macro_optional_find_package(KDE4)
|
||||||
IF(KDE4_FOUND)
|
IF(KDE4_FOUND)
|
||||||
#KDE4 adds and removes some compiler flags that we don't like
|
#KDE4 adds and removes some compiler flags that we don't like
|
||||||
STRING( REPLACE "-std=iso9899:1990" "" CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
|
STRING( REPLACE "-std=iso9899:1990" "" CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
|
||||||
@@ -107,9 +160,6 @@ ELSE()
|
|||||||
SET( CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
|
SET( CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
include( CheckTagLibFileName )
|
|
||||||
check_taglib_filename( COMPLEX_TAGLIB_FILENAME )
|
|
||||||
|
|
||||||
IF( WIN32 )
|
IF( WIN32 )
|
||||||
find_library(QTSPARKLE_LIBRARIES qtsparkle)
|
find_library(QTSPARKLE_LIBRARIES qtsparkle)
|
||||||
ENDIF( WIN32 )
|
ENDIF( WIN32 )
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
SET(WINDRES_EXECUTABLE ${CMAKE_RC_COMPILER})
|
||||||
|
|
||||||
# This macro is taken from kdelibs/cmake/modules/KDE4Macros.cmake.
|
# This macro is taken from kdelibs/cmake/modules/KDE4Macros.cmake.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2006-2009 Alexander Neundorf, <neundorf@kde.org>
|
# Copyright (c) 2006-2009 Alexander Neundorf, <neundorf@kde.org>
|
||||||
|
23
CMakeModules/CMakeDateStamp.cmake
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
find_program(DATE_EXECUTABLE NAMES date)
|
||||||
|
mark_as_advanced(DATE_EXECUTABLE)
|
||||||
|
|
||||||
|
if(DATE_EXECUTABLE)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${DATE_EXECUTABLE} +%Y
|
||||||
|
OUTPUT_VARIABLE CMAKE_DATESTAMP_YEAR
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${DATE_EXECUTABLE} +%m
|
||||||
|
OUTPUT_VARIABLE CMAKE_DATESTAMP_MONTH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${DATE_EXECUTABLE} +%d
|
||||||
|
OUTPUT_VARIABLE CMAKE_DATESTAMP_DAY
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
endif()
|
45
CMakeModules/CMakeVersionSource.cmake
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Try to identify the current development source version.
|
||||||
|
set(CMAKE_VERSION_SOURCE "")
|
||||||
|
if(EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD)
|
||||||
|
find_program(GIT_EXECUTABLE NAMES git git.cmd)
|
||||||
|
mark_as_advanced(GIT_EXECUTABLE)
|
||||||
|
if(GIT_EXECUTABLE)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=7 HEAD
|
||||||
|
OUTPUT_VARIABLE head
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
if(head)
|
||||||
|
set(branch "")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${GIT_EXECUTABLE} name-rev HEAD
|
||||||
|
OUTPUT_VARIABLE branch
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
string(REGEX REPLACE "HEAD " "" branch "${branch}")
|
||||||
|
set(CMAKE_VERSION_SOURCE "git-${branch}-${head}")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${GIT_EXECUTABLE} update-index -q --refresh
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
|
||||||
|
OUTPUT_VARIABLE dirty
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
if(dirty)
|
||||||
|
set(CMAKE_VERSION_SOURCE "${CMAKE_VERSION_SOURCE}-dirty")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
elseif(EXISTS ${CMAKE_SOURCE_DIR}/CVS/Repository)
|
||||||
|
file(READ ${CMAKE_SOURCE_DIR}/CVS/Repository repo)
|
||||||
|
set(branch "")
|
||||||
|
if("${repo}" MATCHES "\\.git/")
|
||||||
|
string(REGEX REPLACE ".*\\.git/([^\r\n]*).*" "-\\1" branch "${repo}")
|
||||||
|
endif()
|
||||||
|
set(CMAKE_VERSION_SOURCE "cvs${branch}")
|
||||||
|
endif()
|
@@ -12,9 +12,12 @@
|
|||||||
INCLUDE(CheckSymbolExists)
|
INCLUDE(CheckSymbolExists)
|
||||||
INCLUDE(FindLibraryWithDebug)
|
INCLUDE(FindLibraryWithDebug)
|
||||||
|
|
||||||
if(NOT CLUCENE_MIN_VERSION)
|
|
||||||
set(CLUCENE_MIN_VERSION "0.9.23")
|
IF(CLucene_FIND_VERSION)
|
||||||
endif(NOT CLUCENE_MIN_VERSION)
|
SET(CLUCENE_MIN_VERSION ${CLucene_FIND_VERSION})
|
||||||
|
ELSEIF()
|
||||||
|
SET(CLUCENE_MIN_VERSION "0.9.23")
|
||||||
|
ENDIF(CLucene_FIND_VERSION)
|
||||||
|
|
||||||
IF(EXISTS ${PROJECT_CMAKE}/CLuceneConfig.cmake)
|
IF(EXISTS ${PROJECT_CMAKE}/CLuceneConfig.cmake)
|
||||||
INCLUDE(${PROJECT_CMAKE}/CLuceneConfig.cmake)
|
INCLUDE(${PROJECT_CMAKE}/CLuceneConfig.cmake)
|
||||||
|
@@ -38,14 +38,14 @@ else(PHONON_FOUND)
|
|||||||
find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h PATHS ${KDE4_INCLUDE_INSTALL_DIR} ${QT_INCLUDE_DIR} ${INCLUDE_INSTALL_DIR} ${QT_LIBRARY_DIR})
|
find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h PATHS ${KDE4_INCLUDE_INSTALL_DIR} ${QT_INCLUDE_DIR} ${INCLUDE_INSTALL_DIR} ${QT_LIBRARY_DIR})
|
||||||
find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h)
|
find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h)
|
||||||
|
|
||||||
if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
|
_phonon_find_version()
|
||||||
|
if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY AND NOT PHONON_VERSION VERSION_LESS ${Phonon_FIND_VERSION})
|
||||||
set(PHONON_LIBS ${phonon_LIB_DEPENDS} ${PHONON_LIBRARY})
|
set(PHONON_LIBS ${phonon_LIB_DEPENDS} ${PHONON_LIBRARY})
|
||||||
set(PHONON_INCLUDES ${PHONON_INCLUDE_DIR}/KDE ${PHONON_INCLUDE_DIR})
|
set(PHONON_INCLUDES ${PHONON_INCLUDE_DIR}/KDE ${PHONON_INCLUDE_DIR})
|
||||||
set(PHONON_FOUND TRUE)
|
set(PHONON_FOUND TRUE)
|
||||||
_phonon_find_version()
|
else(PHONON_INCLUDE_DIR AND PHONON_LIBRARY AND NOT PHONON_VERSION VERSION_LESS ${Phonon_FIND_VERSION})
|
||||||
else(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
|
|
||||||
set(PHONON_FOUND FALSE)
|
set(PHONON_FOUND FALSE)
|
||||||
endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
|
endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY AND NOT PHONON_VERSION VERSION_LESS ${Phonon_FIND_VERSION})
|
||||||
|
|
||||||
if(PHONON_FOUND)
|
if(PHONON_FOUND)
|
||||||
if(NOT PHONON_FIND_QUIETLY)
|
if(NOT PHONON_FIND_QUIETLY)
|
||||||
|
24
CMakeModules/NSIS.InstallOptions.ini.in
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[Settings]
|
||||||
|
NumFields=3
|
||||||
|
|
||||||
|
[Field 1]
|
||||||
|
Type=Label
|
||||||
|
Left=0
|
||||||
|
Right=-1
|
||||||
|
Top=0
|
||||||
|
Bottom=24
|
||||||
|
|
||||||
|
[Field 2]
|
||||||
|
Type=RadioButton
|
||||||
|
Left=30
|
||||||
|
Right=-1
|
||||||
|
Top=50
|
||||||
|
Bottom=58
|
||||||
|
State=1
|
||||||
|
|
||||||
|
[Field 3]
|
||||||
|
Type=RadioButton
|
||||||
|
Left=30
|
||||||
|
Right=-1
|
||||||
|
Top=70
|
||||||
|
Bottom=78
|
@@ -20,53 +20,54 @@
|
|||||||
!endif
|
!endif
|
||||||
!define MING_BIN "${MING_PATH}/bin"
|
!define MING_BIN "${MING_PATH}/bin"
|
||||||
!define MING_LIB "${MING_PATH}/lib"
|
!define MING_LIB "${MING_PATH}/lib"
|
||||||
!define ROOT_PATH "..\..\.." ; assuming the script is in ROOT/admin/win/nsi
|
!define BUILD_PATH "@CMAKE_BINARY_DIR@"
|
||||||
!define BUILD_PATH "${ROOT_PATH}\build"
|
!define SOURCE_PATH "@CMAKE_SOURCE_DIR@"
|
||||||
!define QT_DLL_PATH "${MING_BIN}"
|
!define QT_DLL_PATH "${MING_BIN}"
|
||||||
!define SQLITE_DLL_PATH "${MING_LIB}/qt4/plugins/sqldrivers"
|
!define SQLITE_DLL_PATH "${MING_LIB}/qt4/plugins/sqldrivers"
|
||||||
!define IMAGEFORMATS_DLL_PATH "${MING_LIB}/qt4/plugins/imageformats"
|
!define IMAGEFORMATS_DLL_PATH "${MING_LIB}/qt4/plugins/imageformats"
|
||||||
!define VLC_PATH "${ROOT_PATH}\..\vlc"
|
|
||||||
!define VLC_PLUGIN_PATH "${VLC_PATH}\plugins"
|
; We use official release plugins
|
||||||
|
; mingw32-vlc from obs misses a lot and has even broken ones probably
|
||||||
|
!define VLC_PATH "${SOURCE_PATH}\admin\win\vlc\prefix" ; SIC! ^
|
||||||
|
!define VLC_BIN "${VLC_PATH}\bin"
|
||||||
|
!define VLC_PLUGIN_PATH "${VLC_BIN}\plugins"
|
||||||
|
|
||||||
|
!define NSI_PATH "${SOURCE_PATH}/admin/win/nsi"
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Increment installer revision number as part of this script.
|
; Installer version
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
!define /file REVISION_LAST revision.txt
|
|
||||||
!define /math REVISION ${REVISION_LAST} + 1
|
|
||||||
!delfile revision.txt
|
|
||||||
!appendfile revision.txt ${REVISION}
|
|
||||||
|
|
||||||
!ifndef VER_MAJOR && VER_MINOR && VER_BUILD
|
!define VER_MAJOR "@CPACK_PACKAGE_VERSION_MAJOR@"
|
||||||
!define VER_MAJOR "0"
|
!define VER_MINOR "@CPACK_PACKAGE_VERSION_MINOR@"
|
||||||
!define VER_MINOR "1"
|
!define VER_BUILD "@CPACK_PACKAGE_VERSION_PATCH@"
|
||||||
!define VER_BUILD "0rc2"
|
!define VERSION "@CPACK_PACKAGE_VERSION@"
|
||||||
!endif
|
|
||||||
|
|
||||||
!define VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}"
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Installer build timestamp.
|
; Installer build timestamp.
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
!define /date BUILD_TIME "built on %Y/%m/%d at %I:%M %p (rev. ${REVISION})"
|
!define /date BUILD_TIME "built on %Y/%m/%d at %I:%M %p"
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Initial installer setup and definitions.
|
; Initial installer setup and definitions.
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
Name "Tomahawk"
|
Name "@CPACK_NSIS_PACKAGE_NAME@"
|
||||||
Caption "Tomahawk Installer"
|
Caption "Tomahawk Installer"
|
||||||
BrandingText "Tomahawk ${VERSION} -- ${BUILD_TIME}"
|
BrandingText "Tomahawk ${VERSION} -- ${BUILD_TIME}"
|
||||||
OutFile "tomahawk-${VERSION}.exe"
|
OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
|
||||||
InstallDir "$PROGRAMFILES\Tomahawk"
|
InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
|
||||||
InstallDirRegKey HKCU "Software\Tomahawk" ""
|
InstallDirRegKey HKCU "Software\Tomahawk" ""
|
||||||
InstType Standard
|
InstType Standard
|
||||||
InstType Full
|
InstType Full
|
||||||
InstType Minimal
|
InstType Minimal
|
||||||
CRCCheck On
|
CRCCheck On
|
||||||
SetCompressor /SOLID lzma
|
SetCompressor @CPACK_NSIS_COMPRESSOR@
|
||||||
RequestExecutionLevel user ;Now using the UAC plugin.
|
RequestExecutionLevel user ;Now using the UAC plugin.
|
||||||
ReserveFile tomahawk.ini
|
ReserveFile NSIS.InstallOptions.ini
|
||||||
ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
|
ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
|
||||||
|
|
||||||
|
@CPACK_NSIS_SECTION_SELECTED_VARS@
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; Include some required header files.
|
; Include some required header files.
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@@ -89,17 +90,17 @@ ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
|
|||||||
; Modern User Interface (MUI) defintions and setup.
|
; Modern User Interface (MUI) defintions and setup.
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
!define MUI_ABORTWARNING
|
!define MUI_ABORTWARNING
|
||||||
!define MUI_ICON installer.ico
|
!define MUI_ICON ${NSI_PATH}\installer.ico
|
||||||
!define MUI_UNICON installer.ico
|
!define MUI_UNICON ${NSI_PATH}\installer.ico
|
||||||
!define MUI_WELCOMEFINISHPAGE_BITMAP welcome.bmp
|
!define MUI_WELCOMEFINISHPAGE_BITMAP ${NSI_PATH}\welcome.bmp
|
||||||
!define MUI_WELCOMEPAGE_TITLE "Tomahawk ${VERSION} Setup$\r$\nInstaller Build Revision ${REVISION}"
|
!define MUI_WELCOMEPAGE_TITLE "@CPACK_PACKAGE_NAME@ ${VERSION} Setup$\r$\nInstaller"
|
||||||
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation.$\r$\n$\r$\n$_CLICK"
|
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation.$\r$\n$\r$\n$_CLICK"
|
||||||
!define MUI_HEADERIMAGE
|
!define MUI_HEADERIMAGE
|
||||||
!define MUI_HEADERIMAGE_BITMAP page_header.bmp
|
!define MUI_HEADERIMAGE_BITMAP ${NSI_PATH}\page_header.bmp
|
||||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||||
!define MUI_FINISHPAGE_TITLE "Tomahawk Install Completed"
|
!define MUI_FINISHPAGE_TITLE "@CPACK_PACKAGE_NAME@ Install Completed"
|
||||||
!define MUI_FINISHPAGE_LINK "Click here to visit the Tomahawk website."
|
!define MUI_FINISHPAGE_LINK "Click here to visit the @CPACK_PACKAGE_NAME@ website."
|
||||||
!define MUI_FINISHPAGE_LINK_LOCATION "http://tomahawk-player.org/"
|
!define MUI_FINISHPAGE_LINK_LOCATION "http://@TOMAHAWK_ORGANIZATION_DOMAIN@"
|
||||||
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
|
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
|
||||||
!ifdef OPTION_FINISHPAGE_RELEASE_NOTES
|
!ifdef OPTION_FINISHPAGE_RELEASE_NOTES
|
||||||
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
|
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
|
||||||
@@ -202,40 +203,37 @@ Function PageReinstall
|
|||||||
IntCmp $R0 ${VER_MINOR} build_check new_version older_version
|
IntCmp $R0 ${VER_MINOR} build_check new_version older_version
|
||||||
build_check:
|
build_check:
|
||||||
ReadRegDWORD $R0 HKLM "Software\Tomahawk" "VersionBuild"
|
ReadRegDWORD $R0 HKLM "Software\Tomahawk" "VersionBuild"
|
||||||
IntCmp $R0 ${VER_BUILD} revision_check new_version older_version
|
IntCmp $R0 ${VER_BUILD} new_version older_version
|
||||||
revision_check:
|
|
||||||
ReadRegDWORD $R0 HKLM "Software\Tomahawk" "VersionRevision"
|
|
||||||
IntCmp $R0 ${REVISION} same_version new_version older_version
|
|
||||||
|
|
||||||
new_version:
|
new_version:
|
||||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 1" "Text" "An older version of Tomahawk is installed on your system. It is recommended that you uninstall the current version before installing. Select the operation you want to perform and click Next to continue."
|
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" "An older version of Tomahawk is installed on your system. It is recommended that you uninstall the current version before installing. Select the operation you want to perform and click Next to continue."
|
||||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 2" "Text" "Uninstall before installing"
|
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" "Uninstall before installing"
|
||||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 3" "Text" "Do not uninstall"
|
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" "Do not uninstall"
|
||||||
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install Tomahawk."
|
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install Tomahawk."
|
||||||
StrCpy $R0 "1"
|
StrCpy $R0 "1"
|
||||||
Goto reinst_start
|
Goto reinst_start
|
||||||
|
|
||||||
older_version:
|
older_version:
|
||||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 1" "Text" "A newer version of Tomahawk is already installed! It is not recommended that you install an older version. If you really want to install this older version, it is better to uninstall the current version first. Select the operation you want to perform and click Next to continue."
|
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" "A newer version of Tomahawk is already installed! It is not recommended that you install an older version. If you really want to install this older version, it is better to uninstall the current version first. Select the operation you want to perform and click Next to continue."
|
||||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 2" "Text" "Uninstall before installing"
|
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" "Uninstall before installing"
|
||||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 3" "Text" "Do not uninstall"
|
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" "Do not uninstall"
|
||||||
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install Tomahawk."
|
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install Tomahawk."
|
||||||
StrCpy $R0 "1"
|
StrCpy $R0 "1"
|
||||||
Goto reinst_start
|
Goto reinst_start
|
||||||
|
|
||||||
same_version:
|
same_version:
|
||||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 1" "Text" "Tomahawk ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
|
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" "Tomahawk ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
|
||||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 2" "Text" "Add/Reinstall components"
|
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" "Add/Reinstall components"
|
||||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 3" "Text" "Uninstall Tomahawk"
|
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" "Uninstall Tomahawk"
|
||||||
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
|
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
|
||||||
StrCpy $R0 "2"
|
StrCpy $R0 "2"
|
||||||
|
|
||||||
reinst_start:
|
reinst_start:
|
||||||
!insertmacro INSTALLOPTIONS_DISPLAY "tomahawk.ini"
|
!insertmacro INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini"
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
Function PageLeaveReinstall
|
Function PageLeaveReinstall
|
||||||
!insertmacro INSTALLOPTIONS_READ $R1 "tomahawk.ini" "Field 2" "State"
|
!insertmacro INSTALLOPTIONS_READ $R1 "NSIS.InstallOptions.ini" "Field 2" "State"
|
||||||
StrCmp $R0 "1" 0 +2
|
StrCmp $R0 "1" 0 +2
|
||||||
StrCmp $R1 "1" reinst_uninstall reinst_done
|
StrCmp $R1 "1" reinst_uninstall reinst_done
|
||||||
StrCmp $R0 "2" 0 +3
|
StrCmp $R0 "2" 0 +3
|
||||||
@@ -262,7 +260,6 @@ FunctionEnd
|
|||||||
# INSTALLER SECTIONS #
|
# INSTALLER SECTIONS #
|
||||||
# #
|
# #
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
|
Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
|
||||||
SectionIn 1 2 3 RO
|
SectionIn 1 2 3 RO
|
||||||
SetDetailsPrint listonly
|
SetDetailsPrint listonly
|
||||||
@@ -294,8 +291,8 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
|
|||||||
!endif
|
!endif
|
||||||
|
|
||||||
;License & release notes.
|
;License & release notes.
|
||||||
File "${ROOT_PATH}\LICENSE.txt"
|
File "@CPACK_RESOURCE_FILE_LICENSE@"
|
||||||
File /oname=NOTES.txt RELEASE_NOTES.txt
|
File /oname=NOTES.txt ${NSI_PATH}\RELEASE_NOTES.txt
|
||||||
|
|
||||||
;QT stuff:
|
;QT stuff:
|
||||||
File "${QT_DLL_PATH}\QtCore4.dll"
|
File "${QT_DLL_PATH}\QtCore4.dll"
|
||||||
@@ -330,15 +327,15 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
|
|||||||
File "${MING_BIN}\libdbus-1-3.dll"
|
File "${MING_BIN}\libdbus-1-3.dll"
|
||||||
File "${MING_BIN}\dbus-daemon.exe"
|
File "${MING_BIN}\dbus-daemon.exe"
|
||||||
|
|
||||||
File "${MING_BIN}\libphonon.dll"
|
File "${VLC_BIN}\libphonon.dll"
|
||||||
SetOutPath "$INSTDIR\phonon_backend"
|
SetOutPath "$INSTDIR\phonon_backend"
|
||||||
File "${MING_BIN}\phonon_backend\phonon_vlc.dll"
|
File "${VLC_BIN}\phonon_backend\phonon_vlc.dll"
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
|
|
||||||
;VLC
|
;VLC
|
||||||
;SetOutPath "$INSTDIR\phonon_backend"
|
;SetOutPath "$INSTDIR\phonon_backend"
|
||||||
File "${VLC_PATH}\libvlc.dll"
|
File "${VLC_BIN}\libvlc.dll"
|
||||||
File "${VLC_PATH}\libvlccore.dll"
|
File "${VLC_BIN}\libvlccore.dll"
|
||||||
SetOutPath "$INSTDIR\plugins"
|
SetOutPath "$INSTDIR\plugins"
|
||||||
File /r "${VLC_PLUGIN_PATH}\*.dll"
|
File /r "${VLC_PLUGIN_PATH}\*.dll"
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
@@ -566,7 +563,7 @@ SectionEnd
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
Function .onInit
|
Function .onInit
|
||||||
!insertmacro INSTALLOPTIONS_EXTRACT "tomahawk.ini"
|
!insertmacro INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
|
||||||
|
|
||||||
;Remove Quick Launch option from Windows 7, as no longer applicable - usually.
|
;Remove Quick Launch option from Windows 7, as no longer applicable - usually.
|
||||||
${IfNot} ${AtMostWinVista}
|
${IfNot} ${AtMostWinVista}
|
77
CPackOptions.cmake.in
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
# This file is configured at cmake time, and loaded at cpack time.
|
||||||
|
# To pass variables to cpack from cmake, they must be configured
|
||||||
|
# in this file.
|
||||||
|
|
||||||
|
if(CPACK_GENERATOR MATCHES "NSIS")
|
||||||
|
if( NOT EXISTS "@CMAKE_SOURCE_DIR@/admin/win/vlc/")
|
||||||
|
MESSAGE(FATAL_ERROR "\n You don't have vlc in your admin/win/ dir. \n Please change into that dir and execute 'sh update-vlc.sh'" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#SET(CPACK_NSIS_INSTALL_ROOT "@CPACK_NSIS_INSTALL_ROOT@")
|
||||||
|
|
||||||
|
# set the install/unistall icon used for the installer itself
|
||||||
|
# There is a bug in NSI that does not handle full unix paths properly.
|
||||||
|
#SET(CPACK_NSIS_MUI_ICON "@CMake_SOURCE_DIR@/Utilities/Release\\CMakeLogo.ico")
|
||||||
|
#SET(CPACK_NSIS_MUI_UNIICON "@CMake_SOURCE_DIR@/Utilities/Release\\CMakeLogo.ico")
|
||||||
|
# set the package header icon for MUI
|
||||||
|
#SET(CPACK_PACKAGE_ICON "@CMake_SOURCE_DIR@/Utilities/Release\\CMakeInstall.bmp")
|
||||||
|
# tell cpack to create links to the doc files
|
||||||
|
#SET(CPACK_NSIS_MENU_LINKS
|
||||||
|
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-gui.html" "cmake-gui Help"
|
||||||
|
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake.html" "CMake Help"
|
||||||
|
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-properties.html"
|
||||||
|
# "CMake Properties and Variables Help"
|
||||||
|
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/ctest.html" "CTest Help"
|
||||||
|
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-modules.html" "CMake Modules Help"
|
||||||
|
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-commands.html" "CMake Commands Help"
|
||||||
|
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cpack.html" "CPack Help"
|
||||||
|
# "http://www.cmake.org" "CMake Web Site"
|
||||||
|
# )
|
||||||
|
# Use the icon from cmake-gui for add-remove programs
|
||||||
|
#SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\cmake-gui.exe")
|
||||||
|
#
|
||||||
|
#SET(CPACK_NSIS_PACKAGE_NAME "@CPACK_NSIS_PACKAGE_NAME@")
|
||||||
|
#SET(CPACK_NSIS_DISPLAY_NAME "@CPACK_NSIS_PACKAGE_NAME@, a cross-platform, open-source build system")
|
||||||
|
#SET(CPACK_NSIS_HELP_LINK "http://www.cmake.org")
|
||||||
|
#SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.kitware.com")
|
||||||
|
#SET(CPACK_NSIS_CONTACT @CPACK_PACKAGE_CONTACT@)
|
||||||
|
#SET(CPACK_NSIS_MODIFY_PATH ON)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### all options
|
||||||
|
#CPACK_NSIS_MUI_ICON The icon file (.ico) for the generated install program. Both this and CPACK_NSIS_MUI_UNIICON need to set for this to have any effect. installer.ico
|
||||||
|
#CPACK_NSIS_MUI_UNIICON The icon file (.ico) for the generated uninstall program. Both this and CPACK_NSIS_MUI_ICON need to set for this to have any effect. uninstaller.ico
|
||||||
|
SET( CPACK_PACKAGE_ICON @CMAKE_SOURCE_DIR@/admin/win/nsi/installer.ico ) # A branding image that will be displayed on the top bar inside the installer. installer.bmp
|
||||||
|
#CPACK_NSIS_EXTRA_INSTALL_COMMANDS Extra NSIS commands that will be added to the install Section. ExecWait '\\\"$INSTDIR\\\\vcredist_x86.exe\\\" /q:a'
|
||||||
|
#CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS Extra NSIS commands that will be added to the uninstall Section.
|
||||||
|
SET( CPACK_NSIS_COMPRESSOR "/SOLID lzma" ) # The arguments that will be passed to the NSIS SetCompressor command. /SOLID lzma
|
||||||
|
#CPACK_NSIS_MODIFY_PATH If this is set to "ON", then an extra page will appear in the installer that will allow the user to choose whether the program directory should be added to the system PATH variable. ON
|
||||||
|
#CPACK_NSIS_DISPLAY_NAME Undocumented. "${CPACK_PACKAGE_INSTALL_DIRECTORY} My Famous Project"
|
||||||
|
#CPACK_NSIS_INSTALLED_ICON_NAME Set the icon used for the Windows "Add or Remove Programs" tool. "bin\\\\MyExecutable.exe"
|
||||||
|
#CPACK_NSIS_HELP_LINK Adds link to registry. URI. "http:\\\\\\\\www.my-project-home-page.org"
|
||||||
|
#CPACK_NSIS_URL_INFO_ABOUT Adds link to registry and the vendor in add/remove programs' "Click here for support information" in program entry links here. "http:\\\\\\\\www.my-personal-home-page.com"
|
||||||
|
#CPACK_NSIS_CONTACT Adds link to add/remove programs' "Click here for support information" in program entry. "me@my-personal-home-page.com"
|
||||||
|
#CPACK_NSIS_CREATE_ICONS_EXTRA Additional NSIS commands for creating start menu shortcuts. set(CPACK_NSIS_CREATE_ICONS "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${PROJECT_NAME}.lnk' '\$INSTDIR\\\\${PROJECT_NAME}.exe'")
|
||||||
|
#CPACK_NSIS_DELETE_ICONS_EXTRA Undocumented. Possibly: Additional NSIS commands to uninstall start menu shortcuts.
|
||||||
|
#CPACK_NSIS_MENU_LINKS Used to override the Start Menu links. "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/CMakeSetup.html" "CMakeSetup Help"
|
||||||
|
#CPACK_NSIS_MUI_FINISHPAGE_RUN If used, will make it possible for user to choose (on an additional page, displayed at the end of the installation) to run intalled program. Should point to program name to run, seemingly without any sub-directories of the installation directory in case program installed in such sub-directories (but please check generated NSIS script if you can't make it work). "MyExecutable.exe"
|
||||||
|
|
||||||
|
endif(CPACK_GENERATOR MATCHES "NSIS")
|
||||||
|
|
||||||
|
## include the cpack options for qt dialog if they exisit
|
||||||
|
## they might not if qt was not enabled for the build
|
||||||
|
#INCLUDE("@QT_DIALOG_CPACK_OPTIONS_FILE@" OPTIONAL)
|
||||||
|
|
||||||
|
|
||||||
|
#if("${CPACK_GENERATOR}" STREQUAL "PackageMaker")
|
||||||
|
# if(CMAKE_PACKAGE_QTGUI)
|
||||||
|
# set(CPACK_PACKAGE_DEFAULT_LOCATION "/Applications")
|
||||||
|
# else(CMAKE_PACKAGE_QTGUI)
|
||||||
|
# set(CPACK_PACKAGE_DEFAULT_LOCATION "/usr")
|
||||||
|
# endif(CMAKE_PACKAGE_QTGUI)
|
||||||
|
#endif("${CPACK_GENERATOR}" STREQUAL "PackageMaker")
|
||||||
|
|
||||||
|
|
||||||
|
SET( CMAKE_SOURCE_DIR @CMAKE_SOURCE_DIR@ )
|
||||||
|
SET( CMAKE_BINARY_DIR @CMAKE_BINARY_DIR@ )
|
84
ChangeLog
@@ -1,22 +1,83 @@
|
|||||||
|
Version 0.2.0:
|
||||||
|
* Re-resolve queries when their resolved-to source goes offline.
|
||||||
|
* Cleanup formatting of Preference/Configure and Diagnostics windows.
|
||||||
|
* Add selection indicator on album art.
|
||||||
|
* Fix inability to create Echonest playlists based solely on style or mood.
|
||||||
|
* Created new Artist & Album page, showing various related information.
|
||||||
|
* Update playlists in dashboard to keep them in sync.
|
||||||
|
* Support Rdio track URLs and ability to drop them onto Tomahawk.
|
||||||
|
* Change "Recently Played" page to "Dashboard".
|
||||||
|
* Prioritize resolving newer queries to make GUI more responsive.
|
||||||
|
* Automatically expand local collection node in sidebar on launch.
|
||||||
|
* Display spinner animation while searching for tracks.
|
||||||
|
* Let Tomahawk-headless users trigger a rescan with --filescan.
|
||||||
|
* Include Stations and Automatic Playlists in "New Stations and Playlists".
|
||||||
|
* Always keep current page and sidebar selection in sync.
|
||||||
|
* New icon theme and many design tweaks.
|
||||||
|
* Fixed bug where drop indicator wouldn't show below the last track of a
|
||||||
|
playlist.
|
||||||
|
* Added support for "playing" Spotify track URLs (and t.co and bit.ly
|
||||||
|
shortened track URLs) and ability to drag/drop them into Tomahawk.
|
||||||
|
* Added support for JSPF playlists (XSPF via JSON).
|
||||||
|
* Scroll per pixel to making scrolling feel more natural.
|
||||||
|
* Filter out duplicate tracks in Collection tree view.
|
||||||
|
* Spotify resolver now honors SOCKS5 proxy settings.
|
||||||
|
* Made "show offline sources" menu option a toggle instead of two separate
|
||||||
|
entries.
|
||||||
|
* Properly decode escaped characters coming from HTTP API.
|
||||||
|
* Handle/display resolver file paths becoming invalid in Preferences.
|
||||||
|
* Fixed track skipping-on-pause bug when using Gstreamer backend.
|
||||||
|
* Fixed a few crashes that could occur when fetching data from Last.fm.
|
||||||
|
* Made Twitter dialog more readable/understandable.
|
||||||
|
* Fixed streaming from https:// links.
|
||||||
|
* Implement new Javascript resolver API and ability to present config
|
||||||
|
dialogs for resolvers.
|
||||||
|
* Show when a track was played in the Recently Played tracks history.
|
||||||
|
* Added context menus for Artists and Albums.
|
||||||
|
* Fixed playlist bugs that would cause track to stop playing when dropping
|
||||||
|
or moving items in the same playlist.
|
||||||
|
* Set volume to 75% on startup.
|
||||||
|
* Added "listen along" feature (and ability to "catch up").
|
||||||
|
* Added "love" feature - also "loves" track on Last.fm.
|
||||||
|
* Twitter checks for updates less often now, saving user API calls from
|
||||||
|
running out when using multiple clients.
|
||||||
|
* Added score column and score bars to indicate resolver match certainty.
|
||||||
|
* Added "New Additions" page for each source.
|
||||||
|
* Improved tomahawk:// link handling. Added support for http://toma.hk/.
|
||||||
|
* Fixed sorting by file size.
|
||||||
|
* Improved the way Adium status is updated with now-playing information.
|
||||||
|
* Re-resolve tracks when a resolver is added/removed/enabled/disabled.
|
||||||
|
* Added global search function that searches all available sources.
|
||||||
|
* Collection scanner can now run automatically, watching files and dirs for
|
||||||
|
changes.
|
||||||
|
* Added Pipeline status view.
|
||||||
|
* Allow seeking in songs - if supported by audio backend.
|
||||||
|
* Added ability to make a copy of a peer's playlist.
|
||||||
|
* Shuffle and Repeat settings are stored on a playlist by playlist basis.
|
||||||
|
* (Linux) Desktop notifications for now playing.
|
||||||
|
* (OS X) Removed "test login" button from Last.fm settings.
|
||||||
|
* (OS X) Added MediaKey support.
|
||||||
|
* (OS X) Don't quit on window close to conform to best practices.
|
||||||
|
|
||||||
Version 0.1.0:
|
Version 0.1.0:
|
||||||
* Fixed stations so they resolve against all available sources instead of
|
* Fixed stations so they resolve against all available sources instead of
|
||||||
only local and friend's collections.
|
only local and friend's collections.
|
||||||
* Add a Song seed for stations and automatic playlists, and allow dragging of
|
* Add a Song seed for stations and automatic playlists, and allow dragging
|
||||||
any tracks to the New Stations entry to create a pre-seeded station.
|
of any tracks to the New Stations entry to create a pre-seeded station.
|
||||||
* Added auto-completion for artists while filling in a station or automatic
|
* Added auto-completion for artists while filling in a station or automatic
|
||||||
playlist.
|
playlist.
|
||||||
* SOCKS5 proxy support. Noproxy hosts are also supported but no wildcard
|
* SOCKS5 proxy support. Noproxy hosts are also supported but no wildcard
|
||||||
support (yet).
|
support (yet).
|
||||||
* Support loading of - and exporting to - .xspf playlists
|
* Support loading of - and exporting to - .xspf playlists.
|
||||||
* Added Tomahawk:// protocol support and share links for many things including
|
* Added Tomahawk:// protocol support and share links for many things
|
||||||
tracks, playlists, and stations.
|
including tracks, playlists, and stations.
|
||||||
* Autoload automatically detected resolvers on startup.
|
* Autoload automatically detected resolvers on startup.
|
||||||
* Fix issue where track resolving spinner never stopped if tracks were
|
* Fix issue where track resolving spinner never stopped if tracks were
|
||||||
removed from playlist while resolving.
|
removed from playlist while resolving.
|
||||||
* Twitter & Jabber profile pictures are shown.
|
* Twitter & Jabber profile pictures are shown.
|
||||||
* Fix issues with stations where multiple tracks could be added at once.
|
* Fix issues with stations where multiple tracks could be added at once.
|
||||||
* Allow multiple accounts of the same type.
|
* Allow multiple accounts of the same type.
|
||||||
* Add new Google account type that is a thin wrapper around a Jabber plugin.
|
* Add new Google account type, a thin wrapper around a Jabber plugin.
|
||||||
* Overhaul the settings dialog interface.
|
* Overhaul the settings dialog interface.
|
||||||
* Resolvers can now be enabled and disabled, and some can be configured
|
* Resolvers can now be enabled and disabled, and some can be configured
|
||||||
directly in Tomahawk, for example the new Spotify resolver.
|
directly in Tomahawk, for example the new Spotify resolver.
|
||||||
@@ -24,21 +85,21 @@ Version 0.1.0:
|
|||||||
as a node under the Super Collection.
|
as a node under the Super Collection.
|
||||||
* Fix massive speed bottleneck on startup in the case of many recently
|
* Fix massive speed bottleneck on startup in the case of many recently
|
||||||
played playlists.
|
played playlists.
|
||||||
* Removed filter and song view from Super Collection, coming back in the next
|
* Removed filter and song view from Super Collection, coming back in the
|
||||||
release.
|
next release.
|
||||||
* Browse and play collections in our snappy tree-mode, which also shows
|
* Browse and play collections in our snappy tree-mode, which also shows
|
||||||
images for artists and albums.
|
images for artists and albums.
|
||||||
* Fixed crash that could occur when playing a track from a browser.
|
* Fixed crash that could occur when playing a track from a browser.
|
||||||
* Fixed a crash caused by sources going on or offline.
|
* Fixed a crash caused by sources going on or offline.
|
||||||
* Huge optimizations in the resolving pipeline.
|
* Huge optimizations in the resolving pipeline.
|
||||||
* Improved the handling of automatic status messages for Google Talk
|
* Improved the handling of automatic status messages for Google Talk.
|
||||||
* Switch to Phonon sound system, allowing us to support a wide variety
|
* Switch to Phonon sound system, allowing us to support a wide variety
|
||||||
of audio formats.
|
of audio formats.
|
||||||
* UI tweaks and cleanup.
|
* UI tweaks and cleanup.
|
||||||
* (OS X) Open configuration dialogs as sliding sheets.
|
* (OS X) Open configuration dialogs as sliding sheets.
|
||||||
* (OS X) Increase our available file watches to the maximum that the system
|
* (OS X) Increase our available file watches to the maximum that the system
|
||||||
reports.
|
reports.
|
||||||
* (OS X) Added 'Window' menu with zoom/minimize actions
|
* (OS X) Added 'Window' menu with zoom/minimize actions.
|
||||||
|
|
||||||
Version 0.0.3:
|
Version 0.0.3:
|
||||||
* Show spinner while resolving playlists.
|
* Show spinner while resolving playlists.
|
||||||
@@ -57,8 +118,9 @@ Version 0.0.3:
|
|||||||
* Faster painting of playlists with lots of unresolved tracks.
|
* Faster painting of playlists with lots of unresolved tracks.
|
||||||
* Prefer local results when results' score is equal.
|
* Prefer local results when results' score is equal.
|
||||||
* (Windows) The tomahawk:// protocol handler works on Windows now.
|
* (Windows) The tomahawk:// protocol handler works on Windows now.
|
||||||
* (Windows) Fixed launching Tomahawk from Windows installer with admin privileges.
|
|
||||||
* (Windows) Prevent launching a second instance on Windows.
|
* (Windows) Prevent launching a second instance on Windows.
|
||||||
|
* (Windows) Fixed launching Tomahawk from Windows installer with admin
|
||||||
|
privileges.
|
||||||
|
|
||||||
Version 0.0.2:
|
Version 0.0.2:
|
||||||
* Don't reconnect to Jabber if the settings dialog is closed successfully
|
* Don't reconnect to Jabber if the settings dialog is closed successfully
|
||||||
|
4
README
@@ -19,6 +19,10 @@ Detailed building instructions for OS X
|
|||||||
---------------------------------------
|
---------------------------------------
|
||||||
See: http://wiki.tomahawk-player.org/mediawiki/index.php/Building_OS_X_Application_Bundle_on_Snow_Leopard_(10.6)
|
See: http://wiki.tomahawk-player.org/mediawiki/index.php/Building_OS_X_Application_Bundle_on_Snow_Leopard_(10.6)
|
||||||
|
|
||||||
|
Doxygen Documentation
|
||||||
|
---------------------
|
||||||
|
See: http://dev.tomahawk-player.org/api/classes.html
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
Dependencies
|
||||||
------------
|
------------
|
||||||
|
53
TomahawkCPack.cmake
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
INCLUDE( InstallRequiredSystemLibraries )
|
||||||
|
|
||||||
|
SET( CPACK_PACKAGE_CONTACT "Dominik Schmidt <domme@tomahawk-player.org>" )
|
||||||
|
|
||||||
|
SET( CPACK_PACKAGE_FILE_NAME tomahawk-${TOMAHAWK_VERSION} ) # Package file name without extension. Also a directory of installer cmake-2.5.0-Linux-i686
|
||||||
|
|
||||||
|
# CPACK_GENERATOR CPack generator to be used STGZ;TGZ;TZ
|
||||||
|
# CPACK_INCLUDE_TOPLEVEL_DIRECTORY Controls whether CPack adds a top-level directory, usually of the form ProjectName-Version-OS, to the top of package tree. 0 to disable, 1 to enable
|
||||||
|
# CPACK_INSTALL_CMAKE_PROJECTS List of four values: Build directory, Project Name, Project Component, Directory in the package /home/andy/vtk/CMake-bin;CMake;ALL;/
|
||||||
|
SET( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README" ) # File used as a description of a project /path/to/project/ReadMe.txt
|
||||||
|
SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${TOMAHAWK_DESCRIPTION_SUMMARY} ) # Description summary of a project
|
||||||
|
# CPACK_PACKAGE_EXECUTABLES List of pairs of executables and labels. Used by the NSIS generator to create Start Menu shortcuts. ccmake;CMake
|
||||||
|
SET( CPACK_PACKAGE_INSTALL_DIRECTORY ${TOMAHAWK_APPLICATION_NAME} ) # Installation directory on the target system -> C:\Program Files\fellody
|
||||||
|
SET( CPACK_PACKAGE_INSTALL_REGISTRY_KEY ${TOMAHAWK_APPLICATION_NAME} ) # Registry key used when installing this project CMake 2.5.0
|
||||||
|
SET( CPACK_PACKAGE_NAME ${TOMAHAWK_APPLICATION_NAME} ) # Package name, defaults to the project name
|
||||||
|
SET( CPACK_PACKAGE_VENDOR ${TOMAHAWK_ORGANIZATION_NAME} ) # Package vendor name
|
||||||
|
SET( CPACK_PACKAGE_VERSION_MAJOR ${TOMAHAWK_VERSION_MAJOR} )
|
||||||
|
SET( CPACK_PACKAGE_VERSION_MINOR ${TOMAHAWK_VERSION_MINOR} )
|
||||||
|
SET( CPACK_PACKAGE_VERSION_PATCH ${TOMAHAWK_VERSION_PATCH} )
|
||||||
|
|
||||||
|
# CPACK_SOURCE_GENERATOR List of generators used for the source package TGZ;TZ
|
||||||
|
|
||||||
|
SET( CPACK_SOURCE_GENERATOR TGZ )
|
||||||
|
SET( CPACK_SOURCE_IGNORE_FILES "/\\\\.git/" ".*~$" ".kate-swp$" "/build_dir/" "/clang/" "/gcc/" "/build/" "/win/" ) # Pattern of files in the source tree that won't be packaged
|
||||||
|
SET( CPACK_SOURCE_PACKAGE_FILE_NAME tomahawk-${TOMAHAWK_VERSION} ) # Name of the source package
|
||||||
|
# CPACK_SOURCE_STRIP_FILES List of files in the source tree that will be stripped. Starting with CMake 2.6.0 CPACK_SOURCE_STRIP_FILES will be a boolean variable which enables stripping of all files (a list of files evaluates to TRUE in CMake, so this change is compatible).
|
||||||
|
# CPACK_STRIP_FILES List of files to be stripped. Starting with CMake 2.6.0 CPACK_STRIP_FILES will be a boolean variable which enables stripping of all files (a list of files evaluates to TRUE in CMake, so this change is compatible). bin/ccmake;bin/cmake;bin/cpack;bin/ctest
|
||||||
|
# CPACK_SYSTEM_NAME System name, defaults to the value of ${CMAKE_SYSTEM_NAME}. Linux-i686
|
||||||
|
|
||||||
|
# Advanced settings
|
||||||
|
# CPACK_CMAKE_GENERATOR What CMake generator should be used if the project is CMake project. Defaults to the value of CMAKE_GENERATOR. Unix Makefiles
|
||||||
|
SET( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt" ) # License file for the project, used by the STGZ, NSIS, and PackageMaker generators. /home/andy/vtk/CMake/Copyright.txt
|
||||||
|
# CPACK_RESOURCE_FILE_README ReadMe file for the project, used by PackageMaker generator. /home/andy/vtk/CMake/Templates/CPack.GenericDescription.txt
|
||||||
|
# CPACK_RESOURCE_FILE_WELCOME Welcome file for the project, used by PackageMaker generator. /home/andy/vtk/CMake/Templates/CPack.GenericWelcome.txt
|
||||||
|
SET( CPACK_PACKAGE_VERSION ${TOMAHAWK_VERSION} )
|
||||||
|
|
||||||
|
SET( CPACK_TOPLEVEL_TAG "narf" ) # Directory for the installed files. - needed to provide anything to avoid an error# CPACK_INSTALL_COMMANDS Extra commands to install components.
|
||||||
|
# CPACK_INSTALL_DIRECTORIES Extra directories to install.
|
||||||
|
# CPACK_MONOLITHIC_INSTALL When set disables the component-based installer.
|
||||||
|
# CPACK_PACKAGING_INSTALL_PREFIX Sets the default root that the generated package installs into, '/usr' is the default for the debian and redhat generators /usr/local
|
||||||
|
|
||||||
|
##
|
||||||
|
# INSTALL DEPS
|
||||||
|
##
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Set the options file that needs to be included inside CMakeCPackOptions.cmake
|
||||||
|
#SET(QT_DIALOG_CPACK_OPTIONS_FILE ${CMake_BINARY_DIR}/Source/QtDialog/QtDialogCPack.cmake)
|
||||||
|
configure_file("${CMAKE_SOURCE_DIR}/CPackOptions.cmake.in"
|
||||||
|
"${CMAKE_BINARY_DIR}/CPackOptions.cmake" @ONLY)
|
||||||
|
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CPackOptions.cmake") # File included at cpack time, once per generator after setting CPACK_GENERATOR to the actual generator being used; allows per-generator setting of CPACK_* variables at cpack time. ${PROJECT_BINARY_DIR}/CPackOptions.cmake
|
||||||
|
include(CPack)
|
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
@@ -23,40 +23,42 @@
|
|||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>Tomahawk</string>
|
<string>Tomahawk</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>10.5.0</string>
|
<string>10.5.0</string>
|
||||||
<key>SUFeedURL</key>
|
<key>SUFeedURL</key>
|
||||||
<string>http://download.tomahawk-player.org/sparkle</string>
|
<string>http://download.tomahawk-player.org/sparkle/update.php</string>
|
||||||
<key>SUPublicDSAKeyFile</key>
|
<key>SUPublicDSAKeyFile</key>
|
||||||
<string>sparkle_pub.pem</string>
|
<string>sparkle_pub.pem</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>SUEnableSystemProfiling</key>
|
||||||
<array>
|
<true/>
|
||||||
<dict>
|
<key>CFBundleURLTypes</key>
|
||||||
<key>CFBundleURLName</key>
|
<array>
|
||||||
<string>Tomahawk URL</string>
|
<dict>
|
||||||
<key>CFBundleURLSchemes</key>
|
<key>CFBundleURLName</key>
|
||||||
<array>
|
<string>Tomahawk URL</string>
|
||||||
<string>tomahawk</string>
|
<key>CFBundleURLSchemes</key>
|
||||||
</array>
|
<array>
|
||||||
</dict>
|
<string>tomahawk</string>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleDocumentTypes</key>
|
</dict>
|
||||||
<array>
|
</array>
|
||||||
<dict>
|
<key>CFBundleDocumentTypes</key>
|
||||||
<key>CFBundleTypeExtensions</key>
|
<array>
|
||||||
<array>
|
<dict>
|
||||||
<string>xspf</string>
|
<key>CFBundleTypeExtensions</key>
|
||||||
</array>
|
<array>
|
||||||
<key>CFBundleTypeIconFile</key>
|
<string>xspf</string>
|
||||||
<string>Generic.icns</string>
|
</array>
|
||||||
<key>CFBundleTypeMIMETypes</key>
|
<key>CFBundleTypeIconFile</key>
|
||||||
<array>
|
<string>Generic.icns</string>
|
||||||
<string>application/xspf+xml</string>
|
<key>CFBundleTypeMIMETypes</key>
|
||||||
</array>
|
<array>
|
||||||
<key>CFBundleTypeName</key>
|
<string>application/xspf+xml</string>
|
||||||
<string>XSPF Playlist</string>
|
</array>
|
||||||
<key>CFBundleTypeRole</key>
|
<key>CFBundleTypeName</key>
|
||||||
<string>Viewer</string>
|
<string>XSPF Playlist</string>
|
||||||
</dict>
|
<key>CFBundleTypeRole</key>
|
||||||
</array>
|
<string>Viewer</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
@@ -1,64 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# author: max@last.fm
|
|
||||||
# usage: Run from inside the bundle root directory, eg. Last.fm.app
|
|
||||||
# The first parameter should be the QtFrameworks to copy.
|
|
||||||
# Remaining parameters are plugins to copy, directories and files are
|
|
||||||
# valid.
|
|
||||||
# eg: add-Qt-to-bundle.sh 'QtCore QtGui QtXml' \
|
|
||||||
# imageformats \
|
|
||||||
# sqldrivers/libsqlite.dylib
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
QT_FRAMEWORKS_DIR="$QTDIR/lib"
|
|
||||||
QT_PLUGINS_DIR="$QTDIR/plugins"
|
|
||||||
|
|
||||||
if [[ ! -d "$QTDIR/lib/QtCore.framework" ]]
|
|
||||||
then
|
|
||||||
# this dir is the location of install for the official Trolltech dmg
|
|
||||||
if [[ -d /Library/Frameworks/QtCore.framework ]]
|
|
||||||
then
|
|
||||||
QT_FRAMEWORKS_DIR=/Library/Frameworks
|
|
||||||
QT_PLUGINS_DIR=/Developer/Applications/Qt/plugins
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Plugins go to: $QT_PLUGINS_DIR"
|
|
||||||
|
|
||||||
if [ -z $QTDIR ]
|
|
||||||
then
|
|
||||||
echo QTDIR must be set, or install the official Qt dmg
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
|
|
||||||
#first frameworks
|
|
||||||
mkdir -p Contents/Frameworks
|
|
||||||
for x in $1
|
|
||||||
do
|
|
||||||
echo "C $x"
|
|
||||||
cp -R $QT_FRAMEWORKS_DIR/$x.framework Contents/Frameworks/
|
|
||||||
chmod -R u+rw Contents/Frameworks/
|
|
||||||
done
|
|
||||||
|
|
||||||
#plugins
|
|
||||||
shift
|
|
||||||
mkdir -p Contents/MacOS
|
|
||||||
mkdir -p Contents/MacOS/sqldrivers
|
|
||||||
mkdir -p Contents/MacOS/imageformats
|
|
||||||
mkdir -p Contents/MacOS/phonon_backend
|
|
||||||
mkdir -p Contents/MacOS/crypto
|
|
||||||
|
|
||||||
cp -R $QT_PLUGINS_DIR/sqldrivers/libqsqlite.dylib Contents/MacOS/sqldrivers/
|
|
||||||
cp -R $QT_PLUGINS_DIR/imageformats/libqgif.dylib Contents/MacOS/imageformats/
|
|
||||||
cp -R $QT_PLUGINS_DIR/imageformats/libqjpeg.dylib Contents/MacOS/imageformats/
|
|
||||||
cp -R $QT_PLUGINS_DIR/imageformats/libqico.dylib Contents/MacOS/imageformats/
|
|
||||||
cp -R $QT_PLUGINS_DIR/imageformats/libqmng.dylib Contents/MacOS/imageformats/
|
|
||||||
cp -R $QT_PLUGINS_DIR/imageformats/libqsvg.dylib Contents/MacOS/imageformats/
|
|
||||||
cp -R $QT_PLUGINS_DIR/imageformats/libqtiff.dylib Contents/MacOS/imageformats/
|
|
||||||
cp -R $QT_PLUGINS_DIR/crypto/libqca-ossl.dylib Contents/MacOS/crypto/
|
|
||||||
cp -R $QT_PLUGINS_DIR/phonon_backend/phonon_vlc.so Contents/MacOS/phonon_backend/
|
|
||||||
|
|
||||||
#cleanup
|
|
||||||
find Contents/Frameworks -name Headers -o -name \*.prl -o -name \*_debug | xargs rm -rf
|
|
||||||
find Contents -name \*_debug -o -name \*_debug.dylib | xargs rm
|
|
@@ -1,16 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# author: lfranchi@kde.org
|
|
||||||
# usage: Run from inside the bundle root directory, eg. Tomahawk.app
|
|
||||||
# The first parameter should be the spotify resolver binary to copy.
|
|
||||||
# eg: add-spotify.sh /path/to/spotify_tomahawkresolver
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
mkdir -p Contents/Frameworks
|
|
||||||
cp -R /Library/Frameworks/libspotify.framework Contents/Frameworks
|
|
||||||
|
|
||||||
install_name_tool -change /usr/local/Cellar/qt/4.7.3/lib/QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $1
|
|
||||||
install_name_tool -change /usr/local/Cellar/qt/4.7.3/lib/QtNetwork.framework/Versions/4/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork $1
|
|
||||||
install_name_tool -change libqjson.0.dylib @executable_path/libqjson.0.7.1.dylib $1
|
|
||||||
install_name_tool -change /usr/local/Cellar/qjson/0.7.1/lib/libqjson.0.7.1.dylib @executable_path/libqjson.0.7.1.dylib $1
|
|
||||||
mkdir -p Contents/MacOS
|
|
||||||
cp $1 Contents/MacOS/
|
|
@@ -23,65 +23,28 @@ then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
ROOT=`pwd`
|
ROOT=`pwd`
|
||||||
|
|
||||||
QTDIR=`which qmake`
|
|
||||||
LINKDIR=`readlink $QTDIR`
|
|
||||||
QTDIR=`dirname $QTDIR`
|
|
||||||
QTDIR=$QTDIR/`dirname $LINKDIR`
|
|
||||||
QTDIR=`dirname $QTDIR`
|
|
||||||
test -L "$QTDIR" && QTDIR=`readlink $QTDIR`
|
|
||||||
|
|
||||||
echo "Goes here: $QTDIR"
|
|
||||||
|
|
||||||
export QMAKESPEC='macx-g++'
|
|
||||||
export QTDIR
|
|
||||||
export VERSION
|
|
||||||
export QTVERSION='4.7.3'
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
|
|
||||||
CLEAN='1'
|
|
||||||
BUILD='1'
|
|
||||||
NOTQUICK='1'
|
|
||||||
CREATEDMG='1'
|
|
||||||
VERSION=$1
|
VERSION=$1
|
||||||
|
|
||||||
header "Adding Qt to app bundle"
|
################################################################################
|
||||||
cd tomahawk.app
|
|
||||||
$ROOT/../admin/mac/add-Qt-to-bundle.sh \
|
|
||||||
'QtCore QtGui QtXml QtNetwork QtSql QtXmlPatterns QtWebKit phonon'
|
|
||||||
# 'QtCore QtGui QtXml QtNetwork QtSql QtXmlPatterns QtWebKit QtDbus phonon'
|
|
||||||
|
|
||||||
header "Renaming files"
|
mv tomahawk.app Tomahawk.app
|
||||||
|
mv Tomahawk.app/Contents/MacOS/tomahawk Tomahawk.app/Contents/MacOS/Tomahawk
|
||||||
|
|
||||||
|
header "Fixing and copying libraries"
|
||||||
|
$ROOT/../admin/mac/macdeploy.py Tomahawk.app quiet
|
||||||
|
|
||||||
|
cd Tomahawk.app
|
||||||
|
|
||||||
|
header "Renaming icon"
|
||||||
mv Contents/Resources/tomahawkSources.icns Contents/Resources/Tomahawk.icns
|
mv Contents/Resources/tomahawkSources.icns Contents/Resources/Tomahawk.icns
|
||||||
mv Contents/MacOS/tomahawk Contents/MacOS/Tomahawk
|
cp $ROOT/../admin/mac/qt.conf Contents/Resources/qt.conf
|
||||||
# cp $ROOT/../admin/mac/Info.plist Contents/Info.plist
|
|
||||||
|
|
||||||
header "Copying VLC plugins into bundle"
|
header "Copying Sparkle framework"
|
||||||
mkdir -p Contents/plugins
|
|
||||||
cp -R /usr/local/Cellar/vlc-git/HEAD/lib/vlc/plugins/ Contents/plugins
|
|
||||||
rm -rf Contents/plugins/video_* Contents/plugins/gui Contents/plugins/*/libold* Contents/plugins/*/libvcd* Contents/plugins/*/libdvd* \
|
|
||||||
Contents/plugins/*/liblibass* Contents/plugins/*/libx264* Contents/plugins/*/libschroe* Contents/plugins/*/liblibmpeg2* \
|
|
||||||
Contents/plugins/*/libstream_out_* Contents/plugins/*/libmjpeg_plugin* Contents/plugins/*/libh264_plugin* Contents/plugins/*/libzvbi_plugin* Contents/plugins/*/lib*sub*
|
|
||||||
|
|
||||||
header "Running install_name_tool"
|
|
||||||
$ROOT/../admin/mac/deposx.sh
|
|
||||||
|
|
||||||
header "Copying Sparkle pubkey & framework, and qt.conf"
|
|
||||||
cp $ROOT/../admin/mac/sparkle_pub.pem Contents/Resources
|
|
||||||
cp -R /Library/Frameworks/Sparkle.framework Contents/Frameworks
|
cp -R /Library/Frameworks/Sparkle.framework Contents/Frameworks
|
||||||
cp $ROOT/../admin/mac/qt.conf Contents/Resources
|
|
||||||
|
|
||||||
header "Adding spotify resolver to bundle if spotify_tomahawkresolver found in $ROOT"
|
|
||||||
if [ -e $ROOT/spotify_tomahawkresolver ]
|
|
||||||
then
|
|
||||||
header "Found, so adding spotify resolver."ac
|
|
||||||
$ROOT/../admin/mac/add-spotify.sh $ROOT/spotify_tomahawkresolver
|
|
||||||
fi
|
|
||||||
|
|
||||||
header "Creating DMG"
|
header "Creating DMG"
|
||||||
cd ..
|
cd ..
|
||||||
mv tomahawk.app Tomahawk.app
|
|
||||||
$ROOT/../admin/mac/create-dmg.sh Tomahawk.app
|
$ROOT/../admin/mac/create-dmg.sh Tomahawk.app
|
||||||
mv Tomahawk.dmg Tomahawk-$VERSION.dmg
|
mv Tomahawk.dmg Tomahawk-$VERSION.dmg
|
||||||
|
|
||||||
|
@@ -1,164 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# author: max@last.fm, chris@last.fm
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
|
|
||||||
if [ -z $QTDIR ]
|
|
||||||
then
|
|
||||||
echo QTDIR must be set
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z $QTVERSION ]
|
|
||||||
then
|
|
||||||
echo QTVERSION must be set
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
ORIGROOT=`pwd`
|
|
||||||
cd -
|
|
||||||
|
|
||||||
cd Contents
|
|
||||||
|
|
||||||
QTLIBS=`ls Frameworks | cut -d. -f1`
|
|
||||||
LIBS=`cd MacOS && ls -fR1 | grep dylib`
|
|
||||||
PLUGINFOLDERS=`ls plugins | cut -d. -f1`
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
|
|
||||||
function import_lib
|
|
||||||
{
|
|
||||||
echo "L \`$1'"
|
|
||||||
cp -R -L $1 MacOS/`basename $1`
|
|
||||||
chmod u+rw MacOS/`basename $1`
|
|
||||||
deplib_change MacOS/`basename $1`
|
|
||||||
deposx_change MacOS/`basename $1`
|
|
||||||
}
|
|
||||||
|
|
||||||
function deposx_change
|
|
||||||
{
|
|
||||||
echo "D \`$1'"
|
|
||||||
echo $QTDIR
|
|
||||||
|
|
||||||
for y in $QTLIBS
|
|
||||||
do
|
|
||||||
install_name_tool -change $QTDIR/lib/$y.framework/Versions/4/$y \
|
|
||||||
@executable_path/../Frameworks/$y.framework/Versions/4/$y \
|
|
||||||
"$1"
|
|
||||||
|
|
||||||
install_name_tool -change /usr/local/Cellar/qt/$QTVERSION/lib/$y.framework/Versions/4/$y \
|
|
||||||
@executable_path/../Frameworks/$y.framework/Versions/4/$y \
|
|
||||||
"$1"
|
|
||||||
done
|
|
||||||
|
|
||||||
for y in $LIBS
|
|
||||||
do
|
|
||||||
install_name_tool -change $y \
|
|
||||||
@executable_path/$y \
|
|
||||||
"$1"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function deplib_change
|
|
||||||
{
|
|
||||||
install_name_tool -change /usr/local/Cellar/qjson/0.7.1/lib/libqjson.0.7.1.dylib @executable_path/libqjson.0.7.1.dylib $1
|
|
||||||
install_name_tool -change /usr/local/lib/libechonest.1.1.dylib @executable_path/libechonest.1.1.dylib $1
|
|
||||||
install_name_tool -change /usr/local/lib/libclucene-core.1.dylib @executable_path/libclucene-core.1.dylib $1
|
|
||||||
install_name_tool -change /usr/local/lib/libclucene-shared.1.dylib @executable_path/libclucene-shared.1.dylib $1
|
|
||||||
install_name_tool -change /usr/local/Cellar/taglib/1.7/lib/libtag.1.7.0.dylib @executable_path/libtag.1.7.0.dylib $1
|
|
||||||
# install_name_tool -change /usr/local/Cellar/gloox/1.0/lib/libgloox.8.dylib @executable_path/libgloox.8.dylib $1
|
|
||||||
# install_name_tool -change /usr/local/Cellar/libogg/1.2.0/lib/libogg.0.dylib @executable_path/libogg.0.dylib $1
|
|
||||||
# install_name_tool -change /usr/local/Cellar/libvorbis/1.3.1/lib/libvorbis.0.dylib @executable_path/libvorbis.0.dylib $1
|
|
||||||
# install_name_tool -change /usr/local/Cellar/libvorbis/1.3.1/lib/libvorbisfile.3.dylib @executable_path/libvorbisfile.3.dylib $1
|
|
||||||
# install_name_tool -change /usr/local/Cellar/mad/0.15.1b/lib/libmad.0.dylib @executable_path/libmad.0.dylib $1
|
|
||||||
# install_name_tool -change /usr/local/Cellar/flac/1.2.1/lib/libFLAC++.6.dylib @executable_path/libFLAC++.6.dylib $1
|
|
||||||
# install_name_tool -change /usr/local/Cellar/flac/1.2.1/lib/libFLAC.8.dylib @executable_path/libFLAC.8.dylib $1
|
|
||||||
install_name_tool -change /usr/local/Cellar/kde-phonon/4.5.0/lib/libphonon.4.dylib @executable_path/libphonon.4.dylib $1
|
|
||||||
install_name_tool -change /usr/local/Cellar/kde-phonon/4.5.0/lib/libphonon.4.5.0.dylib @executable_path/libphonon.4.dylib $1
|
|
||||||
|
|
||||||
install_name_tool -change $ORIGROOT/libtomahawklib.dylib @executable_path/libtomahawklib.dylib $1
|
|
||||||
install_name_tool -change $ORIGROOT/libtomahawk_sipjabber.dylib @executable_path/libtomahawk_sipjabber.dylib $1
|
|
||||||
install_name_tool -change $ORIGROOT/libtomahawk_sipgoogle.dylib @executable_path/libtomahawk_sipgoogle.dylib $1
|
|
||||||
install_name_tool -change $ORIGROOT/libtomahawk_siptwitter.dylib @executable_path/libtomahawk_siptwitter.dylib $1
|
|
||||||
install_name_tool -change $ORIGROOT/libtomahawk_sipzeroconf.dylib @executable_path/libtomahawk_sipzeroconf.dylib $1
|
|
||||||
install_name_tool -change $ORIGROOT/libtomahawk_qtweetlib.dylib @executable_path/libtomahawk_qtweetlib.dylib $1
|
|
||||||
install_name_tool -change $ORIGROOT/libtomahawk_portfwd.dylib @executable_path/libtomahawk_portfwd.dylib $1
|
|
||||||
install_name_tool -change $ORIGROOT/libjreen.dylib @executable_path/libjreen.dylib $1
|
|
||||||
install_name_tool -change /usr/local/Cellar/jreen/HEAD/lib/libjreen.dylib @executable_path/libjreen.dylib $1
|
|
||||||
install_name_tool -change /usr/local/Cellar/qca/2.0.2/lib/qca.framework/Versions/2/qca @executable_path/../Frameworks/qca.framework/Versions/2/qca $1
|
|
||||||
install_name_tool -change /usr/local/Cellar/gettext/0.18.1.1/lib/libintl.8.dylib @executable_path/libintl.8.dylib $1
|
|
||||||
install_name_tool -change /usr/local/Cellar/vlc-git/HEAD/lib/libvlc.5.dylib @executable_path/libvlc.5.dylib $1
|
|
||||||
install_name_tool -change /usr/local/Cellar/vlc-git/HEAD/lib/libvlccore.4.dylib @executable_path/libvlccore.4.dylib $1
|
|
||||||
|
|
||||||
install_name_tool -change libqjson.0.dylib @executable_path/libqjson.0.7.1.dylib $1
|
|
||||||
install_name_tool -change libechonest.1.1.dylib @executable_path/libechonest.1.1.dylib $1
|
|
||||||
install_name_tool -change libclucene-core.1.dylib @executable_path/libclucene-core.1.dylib $1
|
|
||||||
install_name_tool -change libclucene-shared.1.dylib @executable_path/libclucene-shared.1.dylib $1
|
|
||||||
}
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# first all libraries and executables
|
|
||||||
find MacOS -type f -a -perm -100 | while read x
|
|
||||||
do
|
|
||||||
echo $x
|
|
||||||
y=$(file "$x" | grep 'Mach-O')
|
|
||||||
deposx_change "$x"
|
|
||||||
deplib_change "$x"
|
|
||||||
done
|
|
||||||
|
|
||||||
import_lib /usr/local/Cellar/qjson/0.7.1/lib/libqjson.0.7.1.dylib
|
|
||||||
import_lib /usr/local/Cellar/taglib/1.7/lib/libtag.1.7.0.dylib
|
|
||||||
#import_lib /usr/local/Cellar/gloox/1.0/lib/libgloox.8.dylib
|
|
||||||
#import_lib /usr/local/Cellar/libogg/1.2.0/lib/libogg.0.dylib
|
|
||||||
#import_lib /usr/local/Cellar/libvorbis/1.3.1/lib/libvorbis.0.dylib
|
|
||||||
#import_lib /usr/local/Cellar/libvorbis/1.3.1/lib/libvorbisfile.3.dylib
|
|
||||||
#import_lib /usr/local/Cellar/mad/0.15.1b/lib/libmad.0.dylib
|
|
||||||
#import_lib /usr/local/Cellar/flac/1.2.1/lib/libFLAC++.6.dylib
|
|
||||||
#import_lib /usr/local/Cellar/flac/1.2.1/lib/libFLAC.8.dylib
|
|
||||||
import_lib /usr/local/lib/libechonest.1.1.dylib
|
|
||||||
import_lib /usr/local/lib/libclucene-core.1.dylib
|
|
||||||
import_lib /usr/local/lib/libclucene-shared.1.dylib
|
|
||||||
import_lib /usr/local/Cellar/kde-phonon/4.5.0/lib/libphonon.4.dylib
|
|
||||||
import_lib /usr/local/Cellar/vlc-git/HEAD/lib/libvlc.5.dylib
|
|
||||||
import_lib /usr/local/Cellar/vlc-git/HEAD/lib/libvlccore.4.dylib
|
|
||||||
import_lib /usr/local/Cellar/gettext/0.18.1.1/lib/libintl.8.dylib
|
|
||||||
|
|
||||||
import_lib $ORIGROOT/libjreen.dylib
|
|
||||||
import_lib $ORIGROOT/libtomahawklib.dylib
|
|
||||||
import_lib $ORIGROOT/libtomahawk_sipjabber.dylib
|
|
||||||
import_lib $ORIGROOT/libtomahawk_sipgoogle.dylib
|
|
||||||
import_lib $ORIGROOT/libtomahawk_siptwitter.dylib
|
|
||||||
import_lib $ORIGROOT/libtomahawk_sipzeroconf.dylib
|
|
||||||
import_lib $ORIGROOT/libtomahawk_qtweetlib.dylib
|
|
||||||
import_lib $ORIGROOT/libtomahawk_portfwd.dylib
|
|
||||||
|
|
||||||
cp -R /usr/local/Cellar/qca/2.0.2/lib/qca.framework Frameworks/
|
|
||||||
chmod 644 Frameworks/qca.framework/Versions/2/qca
|
|
||||||
deplib_change Frameworks/qca.framework/Versions/2/qca
|
|
||||||
deposx_change Frameworks/qca.framework/Versions/2/qca
|
|
||||||
|
|
||||||
# now Qt
|
|
||||||
for x in $QTLIBS
|
|
||||||
do
|
|
||||||
echo `pwd`
|
|
||||||
# ls -l Frameworks/$x.framework/Versions/4/$x
|
|
||||||
deposx_change Frameworks/$x.framework/Versions/4/$x
|
|
||||||
install_name_tool -id @executable_path/../Frameworks/$x.framework/Versions/4/$x \
|
|
||||||
Frameworks/$x.framework/Versions/4/$x
|
|
||||||
deplib_change "Frameworks/$x.framework/Versions/4/$x"
|
|
||||||
done
|
|
||||||
|
|
||||||
# now VLC plugins
|
|
||||||
for x in plugins/$PLUGINFOLDERS
|
|
||||||
do
|
|
||||||
for plugin in `ls plugins/$x | cut -f1`
|
|
||||||
do
|
|
||||||
echo "Fixing VLC plugin: $plugin"
|
|
||||||
chmod 644 plugins/$x/$plugin
|
|
||||||
deplib_change plugins/$x/$plugin
|
|
||||||
done
|
|
||||||
done
|
|
517
admin/mac/macdeploy.py
Executable file
@@ -0,0 +1,517 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
# This file is part of Clementine.
|
||||||
|
#
|
||||||
|
# Clementine is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Clementine is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with Clementine. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
FRAMEWORK_SEARCH_PATH=[
|
||||||
|
'/Library/Frameworks',
|
||||||
|
os.path.join(os.environ['HOME'], 'Library/Frameworks')
|
||||||
|
]
|
||||||
|
|
||||||
|
LIBRARY_SEARCH_PATH=['/usr/local/lib', '/usr/local/Cellar/gettext/0.18.1.1/lib', '.']
|
||||||
|
|
||||||
|
|
||||||
|
VLC_PLUGINS=[
|
||||||
|
'access/libaccess_attachment_plugin.dylib',
|
||||||
|
#'access/libaccess_avio_plugin.dylib',
|
||||||
|
'access/libaccess_fake_plugin.dylib',
|
||||||
|
'access/libaccess_ftp_plugin.dylib',
|
||||||
|
'access/libaccess_http_plugin.dylib',
|
||||||
|
'access/libaccess_imem_plugin.dylib',
|
||||||
|
'access/libaccess_mmap_plugin.dylib',
|
||||||
|
'access/libaccess_mms_plugin.dylib',
|
||||||
|
'access/libaccess_realrtsp_plugin.dylib',
|
||||||
|
'access/libaccess_tcp_plugin.dylib',
|
||||||
|
'access/libaccess_udp_plugin.dylib',
|
||||||
|
'access/libcdda_plugin.dylib',
|
||||||
|
'access/libfilesystem_plugin.dylib',
|
||||||
|
'access/libqtcapture_plugin.dylib',
|
||||||
|
'access/librtp_plugin.dylib',
|
||||||
|
'access/libzip_plugin.dylib',
|
||||||
|
'access_output/libaccess_output_dummy_plugin.dylib',
|
||||||
|
'access_output/libaccess_output_file_plugin.dylib',
|
||||||
|
'access_output/libaccess_output_http_plugin.dylib',
|
||||||
|
'access_output/libaccess_output_shout_plugin.dylib',
|
||||||
|
'access_output/libaccess_output_udp_plugin.dylib',
|
||||||
|
'audio_filter/liba52tofloat32_plugin.dylib',
|
||||||
|
'audio_filter/liba52tospdif_plugin.dylib',
|
||||||
|
'audio_filter/libaudio_format_plugin.dylib',
|
||||||
|
'audio_filter/libaudiobargraph_a_plugin.dylib',
|
||||||
|
'audio_filter/libchorus_flanger_plugin.dylib',
|
||||||
|
'audio_filter/libconverter_fixed_plugin.dylib',
|
||||||
|
'audio_filter/libdolby_surround_decoder_plugin.dylib',
|
||||||
|
'audio_filter/libdtstofloat32_plugin.dylib',
|
||||||
|
'audio_filter/libdtstospdif_plugin.dylib',
|
||||||
|
'audio_filter/libequalizer_plugin.dylib',
|
||||||
|
'audio_filter/libheadphone_channel_mixer_plugin.dylib',
|
||||||
|
'audio_filter/libmono_plugin.dylib',
|
||||||
|
'audio_filter/libmpgatofixed32_plugin.dylib',
|
||||||
|
'audio_filter/libnormvol_plugin.dylib',
|
||||||
|
'audio_filter/libparam_eq_plugin.dylib',
|
||||||
|
'audio_filter/libscaletempo_plugin.dylib',
|
||||||
|
'audio_filter/libsimple_channel_mixer_plugin.dylib',
|
||||||
|
'audio_filter/libspatializer_plugin.dylib',
|
||||||
|
'audio_filter/libtrivial_channel_mixer_plugin.dylib',
|
||||||
|
'audio_filter/libugly_resampler_plugin.dylib',
|
||||||
|
'audio_mixer/libfloat32_mixer_plugin.dylib',
|
||||||
|
'audio_mixer/libspdif_mixer_plugin.dylib',
|
||||||
|
'audio_mixer/libtrivial_mixer_plugin.dylib',
|
||||||
|
'audio_output/libaout_file_plugin.dylib',
|
||||||
|
'audio_output/libauhal_plugin.dylib',
|
||||||
|
'codec/liba52_plugin.dylib',
|
||||||
|
'codec/libadpcm_plugin.dylib',
|
||||||
|
'codec/libaes3_plugin.dylib',
|
||||||
|
'codec/libaraw_plugin.dylib',
|
||||||
|
'codec/libavcodec_plugin.dylib',
|
||||||
|
'codec/libcc_plugin.dylib',
|
||||||
|
'codec/libcdg_plugin.dylib',
|
||||||
|
'codec/libdts_plugin.dylib',
|
||||||
|
'codec/libfaad_plugin.dylib',
|
||||||
|
'codec/libfake_plugin.dylib',
|
||||||
|
'codec/libflac_plugin.dylib',
|
||||||
|
'codec/libfluidsynth_plugin.dylib',
|
||||||
|
'codec/libinvmem_plugin.dylib',
|
||||||
|
'codec/liblpcm_plugin.dylib',
|
||||||
|
'codec/libmpeg_audio_plugin.dylib',
|
||||||
|
'codec/libpng_plugin.dylib',
|
||||||
|
'codec/librawvideo_plugin.dylib',
|
||||||
|
'codec/libspeex_plugin.dylib',
|
||||||
|
'codec/libspudec_plugin.dylib',
|
||||||
|
'codec/libtheora_plugin.dylib',
|
||||||
|
'codec/libtwolame_plugin.dylib',
|
||||||
|
'codec/libvorbis_plugin.dylib',
|
||||||
|
'control/libgestures_plugin.dylib',
|
||||||
|
'control/libhotkeys_plugin.dylib',
|
||||||
|
'control/libmotion_plugin.dylib',
|
||||||
|
'control/libnetsync_plugin.dylib',
|
||||||
|
'control/libsignals_plugin.dylib',
|
||||||
|
'demux/libaiff_plugin.dylib',
|
||||||
|
'demux/libasf_plugin.dylib',
|
||||||
|
'demux/libau_plugin.dylib',
|
||||||
|
#'demux/libavformat_plugin.dylib',
|
||||||
|
'demux/libavi_plugin.dylib',
|
||||||
|
'demux/libdemux_cdg_plugin.dylib',
|
||||||
|
'demux/libdemuxdump_plugin.dylib',
|
||||||
|
'demux/libdirac_plugin.dylib',
|
||||||
|
'demux/libes_plugin.dylib',
|
||||||
|
'demux/libflacsys_plugin.dylib',
|
||||||
|
'demux/liblive555_plugin.dylib',
|
||||||
|
'demux/libmkv_plugin.dylib',
|
||||||
|
'demux/libmod_plugin.dylib',
|
||||||
|
'demux/libmp4_plugin.dylib',
|
||||||
|
'demux/libmpc_plugin.dylib',
|
||||||
|
'demux/libmpgv_plugin.dylib',
|
||||||
|
'demux/libnsc_plugin.dylib',
|
||||||
|
'demux/libnsv_plugin.dylib',
|
||||||
|
'demux/libnuv_plugin.dylib',
|
||||||
|
'demux/libogg_plugin.dylib',
|
||||||
|
'demux/libplaylist_plugin.dylib',
|
||||||
|
'demux/libps_plugin.dylib',
|
||||||
|
'demux/libpva_plugin.dylib',
|
||||||
|
'demux/librawaud_plugin.dylib',
|
||||||
|
'demux/librawdv_plugin.dylib',
|
||||||
|
'demux/librawvid_plugin.dylib',
|
||||||
|
'demux/libreal_plugin.dylib',
|
||||||
|
'demux/libsmf_plugin.dylib',
|
||||||
|
'demux/libts_plugin.dylib',
|
||||||
|
'demux/libtta_plugin.dylib',
|
||||||
|
'demux/libty_plugin.dylib',
|
||||||
|
'demux/libvc1_plugin.dylib',
|
||||||
|
'demux/libvoc_plugin.dylib',
|
||||||
|
'demux/libwav_plugin.dylib',
|
||||||
|
'demux/libxa_plugin.dylib',
|
||||||
|
'meta_engine/libfolder_plugin.dylib',
|
||||||
|
'meta_engine/libtaglib_plugin.dylib',
|
||||||
|
'misc/libaudioscrobbler_plugin.dylib',
|
||||||
|
'misc/libdummy_plugin.dylib',
|
||||||
|
'misc/libexport_plugin.dylib',
|
||||||
|
'misc/libfreetype_plugin.dylib',
|
||||||
|
'misc/libgnutls_plugin.dylib',
|
||||||
|
'misc/liblogger_plugin.dylib',
|
||||||
|
'misc/liblua_plugin.dylib',
|
||||||
|
'misc/libosd_parser_plugin.dylib',
|
||||||
|
'misc/libquartztext_plugin.dylib',
|
||||||
|
'misc/libstats_plugin.dylib',
|
||||||
|
'misc/libvod_rtsp_plugin.dylib',
|
||||||
|
'misc/libxml_plugin.dylib',
|
||||||
|
'misc/libxtag_plugin.dylib',
|
||||||
|
'mmx/libi420_rgb_mmx_plugin.dylib',
|
||||||
|
'mmx/libi420_yuy2_mmx_plugin.dylib',
|
||||||
|
'mmx/libi422_yuy2_mmx_plugin.dylib',
|
||||||
|
'mmx/libmemcpymmx_plugin.dylib',
|
||||||
|
'mmxext/libmemcpymmxext_plugin.dylib',
|
||||||
|
'mux/libmux_asf_plugin.dylib',
|
||||||
|
'mux/libmux_avi_plugin.dylib',
|
||||||
|
'mux/libmux_dummy_plugin.dylib',
|
||||||
|
'mux/libmux_mp4_plugin.dylib',
|
||||||
|
'mux/libmux_mpjpeg_plugin.dylib',
|
||||||
|
'mux/libmux_ogg_plugin.dylib',
|
||||||
|
'mux/libmux_ps_plugin.dylib',
|
||||||
|
'mux/libmux_ts_plugin.dylib',
|
||||||
|
'mux/libmux_wav_plugin.dylib',
|
||||||
|
'packetizer/libpacketizer_copy_plugin.dylib',
|
||||||
|
'packetizer/libpacketizer_dirac_plugin.dylib',
|
||||||
|
'packetizer/libpacketizer_flac_plugin.dylib',
|
||||||
|
'packetizer/libpacketizer_h264_plugin.dylib',
|
||||||
|
'packetizer/libpacketizer_mlp_plugin.dylib',
|
||||||
|
'packetizer/libpacketizer_mpeg4audio_plugin.dylib',
|
||||||
|
'packetizer/libpacketizer_mpeg4video_plugin.dylib',
|
||||||
|
'packetizer/libpacketizer_mpegvideo_plugin.dylib',
|
||||||
|
'packetizer/libpacketizer_vc1_plugin.dylib',
|
||||||
|
'sse2/libi420_rgb_sse2_plugin.dylib',
|
||||||
|
'sse2/libi420_yuy2_sse2_plugin.dylib',
|
||||||
|
'sse2/libi422_yuy2_sse2_plugin.dylib',
|
||||||
|
'stream_filter/libdecomp_plugin.dylib',
|
||||||
|
'stream_filter/libstream_filter_rar_plugin.dylib',
|
||||||
|
'stream_filter/libstream_filter_record_plugin.dylib',
|
||||||
|
'visualization/libvisual_plugin.dylib',
|
||||||
|
]
|
||||||
|
|
||||||
|
VLC_SEARCH_PATH=[
|
||||||
|
'/usr/local/lib/vlc/plugins/',
|
||||||
|
]
|
||||||
|
|
||||||
|
QT_PLUGINS = [
|
||||||
|
'crypto/libqca-ossl.dylib',
|
||||||
|
'phonon_backend/phonon_vlc.so',
|
||||||
|
'sqldrivers/libqsqlite.dylib',
|
||||||
|
'imageformats/libqgif.dylib',
|
||||||
|
'imageformats/libqico.dylib',
|
||||||
|
'imageformats/libqjpeg.dylib',
|
||||||
|
'imageformats/libqmng.dylib',
|
||||||
|
]
|
||||||
|
|
||||||
|
TOMAHAWK_PLUGINS = [
|
||||||
|
'libtomahawk_sipjabber.dylib',
|
||||||
|
'libtomahawk_sipgoogle.dylib',
|
||||||
|
'libtomahawk_siptwitter.dylib',
|
||||||
|
'libtomahawk_sipzeroconf.dylib',
|
||||||
|
'libtomahawk_qtweetlib.dylib',
|
||||||
|
]
|
||||||
|
|
||||||
|
QT_PLUGINS_SEARCH_PATH=[
|
||||||
|
'/usr/local/Cellar/qt/4.7.3/plugins',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class Error(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CouldNotFindQtPluginErrorFindFrameworkError(Error):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class InstallNameToolError(Error):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CouldNotFindQtPluginError(Error):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CouldNotFindVLCPluginError(Error):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CouldNotFindScriptPluginError(Error):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print 'Usage: %s <bundle.app>' % sys.argv[0]
|
||||||
|
|
||||||
|
bundle_dir = sys.argv[1]
|
||||||
|
|
||||||
|
bundle_name = os.path.basename(bundle_dir).split('.')[0]
|
||||||
|
|
||||||
|
commands = []
|
||||||
|
|
||||||
|
binary_dir = os.path.join(bundle_dir, 'Contents', 'MacOS')
|
||||||
|
frameworks_dir = os.path.join(bundle_dir, 'Contents', 'Frameworks')
|
||||||
|
commands.append(['mkdir', '-p', frameworks_dir])
|
||||||
|
resources_dir = os.path.join(bundle_dir, 'Contents', 'Resources')
|
||||||
|
commands.append(['mkdir', '-p', resources_dir])
|
||||||
|
plugins_dir = os.path.join(bundle_dir, 'Contents', 'PlugIns')
|
||||||
|
binary = os.path.join(bundle_dir, 'Contents', 'MacOS', bundle_name)
|
||||||
|
|
||||||
|
fixed_libraries = []
|
||||||
|
fixed_frameworks = []
|
||||||
|
|
||||||
|
def GetBrokenLibraries(binary):
|
||||||
|
#print "Checking libs for binary: %s" % binary
|
||||||
|
output = subprocess.Popen(['otool', '-L', binary], stdout=subprocess.PIPE).communicate()[0]
|
||||||
|
broken_libs = {
|
||||||
|
'frameworks': [],
|
||||||
|
'libs': []}
|
||||||
|
for line in [x.split(' ')[0].lstrip() for x in output.split('\n')[1:]]:
|
||||||
|
#print "Checking line: %s" % line
|
||||||
|
if not line: # skip empty lines
|
||||||
|
continue
|
||||||
|
if os.path.basename(binary) == os.path.basename(line):
|
||||||
|
#print "mnope %s-%s" % (os.path.basename(binary), os.path.basename(line))
|
||||||
|
continue
|
||||||
|
if re.match(r'^\s*/System/', line):
|
||||||
|
continue # System framework
|
||||||
|
elif re.match(r'^\s*/usr/lib/', line):
|
||||||
|
#print "unix style system lib"
|
||||||
|
continue # unix style system library
|
||||||
|
elif re.match(r'Breakpad', line):
|
||||||
|
continue # Manually added by cmake.
|
||||||
|
elif re.match(r'^\s*@executable_path', line) or re.match(r'^\s*@loader_path', line):
|
||||||
|
# Potentially already fixed library
|
||||||
|
if '.framework' in line:
|
||||||
|
relative_path = os.path.join(*line.split('/')[3:])
|
||||||
|
if not os.path.exists(os.path.join(frameworks_dir, relative_path)):
|
||||||
|
broken_libs['frameworks'].append(relative_path)
|
||||||
|
else:
|
||||||
|
relative_path = os.path.join(*line.split('/')[1:])
|
||||||
|
#print "RELPATH %s %s" % (relative_path, os.path.join(binary_dir, relative_path))
|
||||||
|
if not os.path.exists(os.path.join(binary_dir, relative_path)):
|
||||||
|
broken_libs['libs'].append(relative_path)
|
||||||
|
elif re.search(r'\w+\.framework', line):
|
||||||
|
broken_libs['frameworks'].append(line)
|
||||||
|
else:
|
||||||
|
broken_libs['libs'].append(line)
|
||||||
|
|
||||||
|
return broken_libs
|
||||||
|
|
||||||
|
def FindFramework(path):
|
||||||
|
for search_path in FRAMEWORK_SEARCH_PATH:
|
||||||
|
abs_path = os.path.join(search_path, path)
|
||||||
|
if os.path.exists(abs_path):
|
||||||
|
return abs_path
|
||||||
|
|
||||||
|
raise CouldNotFindFrameworkError(path)
|
||||||
|
|
||||||
|
def FindLibrary(path):
|
||||||
|
if os.path.exists(path):
|
||||||
|
return path
|
||||||
|
for search_path in LIBRARY_SEARCH_PATH:
|
||||||
|
abs_path = os.path.join(search_path, path)
|
||||||
|
if os.path.exists(abs_path):
|
||||||
|
return abs_path
|
||||||
|
else: # try harder---look for lib name in library folders
|
||||||
|
newpath = os.path.join(search_path,os.path.basename(path))
|
||||||
|
if os.path.exists(newpath):
|
||||||
|
return newpath
|
||||||
|
|
||||||
|
return ""
|
||||||
|
#raise CouldNotFindFrameworkError(path)
|
||||||
|
|
||||||
|
def FixAllLibraries(broken_libs):
|
||||||
|
for framework in broken_libs['frameworks']:
|
||||||
|
FixFramework(framework)
|
||||||
|
for lib in broken_libs['libs']:
|
||||||
|
FixLibrary(lib)
|
||||||
|
|
||||||
|
def FixFramework(path):
|
||||||
|
if path in fixed_libraries:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
fixed_libraries.append(path)
|
||||||
|
abs_path = FindFramework(path)
|
||||||
|
broken_libs = GetBrokenLibraries(abs_path)
|
||||||
|
FixAllLibraries(broken_libs)
|
||||||
|
|
||||||
|
new_path = CopyFramework(abs_path)
|
||||||
|
id = os.sep.join(new_path.split(os.sep)[3:])
|
||||||
|
FixFrameworkId(new_path, id)
|
||||||
|
for framework in broken_libs['frameworks']:
|
||||||
|
FixFrameworkInstallPath(framework, new_path)
|
||||||
|
for library in broken_libs['libs']:
|
||||||
|
FixLibraryInstallPath(library, new_path)
|
||||||
|
|
||||||
|
def FixLibrary(path):
|
||||||
|
if path in fixed_libraries or FindSystemLibrary(os.path.basename(path)) is not None:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
fixed_libraries.append(path)
|
||||||
|
abs_path = FindLibrary(path)
|
||||||
|
if abs_path == "":
|
||||||
|
print "Could not resolve %s, not fixing!" % path
|
||||||
|
return
|
||||||
|
broken_libs = GetBrokenLibraries(abs_path)
|
||||||
|
FixAllLibraries(broken_libs)
|
||||||
|
|
||||||
|
new_path = CopyLibrary(abs_path)
|
||||||
|
FixLibraryId(new_path)
|
||||||
|
for framework in broken_libs['frameworks']:
|
||||||
|
FixFrameworkInstallPath(framework, new_path)
|
||||||
|
for library in broken_libs['libs']:
|
||||||
|
FixLibraryInstallPath(library, new_path)
|
||||||
|
|
||||||
|
def FixVLCPlugin(abs_path, subdir):
|
||||||
|
broken_libs = GetBrokenLibraries(abs_path)
|
||||||
|
FixAllLibraries(broken_libs)
|
||||||
|
|
||||||
|
#print "Copying plugin....%s %s %s" % (plugins_dir, subdir, os.path.join(abs_path.split('/')[-2:]))
|
||||||
|
plugindir = abs_path.split('/')[-2]
|
||||||
|
new_path = os.path.join(plugins_dir, subdir, plugindir, os.path.basename(abs_path))
|
||||||
|
args = ['mkdir', '-p', os.path.dirname(new_path)]
|
||||||
|
commands.append(args)
|
||||||
|
args = ['ditto', '--arch=i386', '--arch=x86_64', abs_path, new_path]
|
||||||
|
commands.append(args)
|
||||||
|
args = ['chmod', 'u+w', new_path]
|
||||||
|
commands.append(args)
|
||||||
|
for framework in broken_libs['frameworks']:
|
||||||
|
FixFrameworkInstallPath(framework, new_path)
|
||||||
|
for library in broken_libs['libs']:
|
||||||
|
FixLibraryInstallPath(library, new_path)
|
||||||
|
|
||||||
|
def FixPlugin(abs_path, subdir):
|
||||||
|
broken_libs = GetBrokenLibraries(abs_path)
|
||||||
|
FixAllLibraries(broken_libs)
|
||||||
|
|
||||||
|
new_path = CopyPlugin(abs_path, subdir)
|
||||||
|
for framework in broken_libs['frameworks']:
|
||||||
|
FixFrameworkInstallPath(framework, new_path)
|
||||||
|
for library in broken_libs['libs']:
|
||||||
|
FixLibraryInstallPath(library, new_path)
|
||||||
|
|
||||||
|
def FixBinary(path):
|
||||||
|
broken_libs = GetBrokenLibraries(path)
|
||||||
|
FixAllLibraries(broken_libs)
|
||||||
|
for framework in broken_libs['frameworks']:
|
||||||
|
FixFrameworkInstallPath(framework, path)
|
||||||
|
for library in broken_libs['libs']:
|
||||||
|
FixLibraryInstallPath(library, path)
|
||||||
|
|
||||||
|
def CopyLibrary(path):
|
||||||
|
new_path = os.path.join(frameworks_dir, os.path.basename(path))
|
||||||
|
args = ['ditto', '--arch=i386', '--arch=x86_64', path, new_path]
|
||||||
|
commands.append(args)
|
||||||
|
args = ['chmod', 'u+w', new_path]
|
||||||
|
commands.append(args)
|
||||||
|
return new_path
|
||||||
|
|
||||||
|
def CopyPlugin(path, subdir):
|
||||||
|
new_path = os.path.join(plugins_dir, subdir, os.path.basename(path))
|
||||||
|
args = ['mkdir', '-p', os.path.dirname(new_path)]
|
||||||
|
commands.append(args)
|
||||||
|
args = ['ditto', '--arch=i386', '--arch=x86_64', path, new_path]
|
||||||
|
commands.append(args)
|
||||||
|
args = ['chmod', 'u+w', new_path]
|
||||||
|
commands.append(args)
|
||||||
|
return new_path
|
||||||
|
|
||||||
|
def CopyFramework(path):
|
||||||
|
parts = path.split(os.sep)
|
||||||
|
for i, part in enumerate(parts):
|
||||||
|
if re.match(r'\w+\.framework', part):
|
||||||
|
full_path = os.path.join(frameworks_dir, *parts[i:-1])
|
||||||
|
break
|
||||||
|
args = ['mkdir', '-p', full_path]
|
||||||
|
commands.append(args)
|
||||||
|
args = ['ditto', '--arch=i386', '--arch=x86_64', path, full_path]
|
||||||
|
commands.append(args)
|
||||||
|
args = ['chmod', 'u+w', os.path.join(full_path, parts[-1])]
|
||||||
|
commands.append(args)
|
||||||
|
|
||||||
|
menu_nib = os.path.join(os.path.split(path)[0], 'Resources', 'qt_menu.nib')
|
||||||
|
if os.path.exists(menu_nib):
|
||||||
|
args = ['cp', '-r', menu_nib, resources_dir]
|
||||||
|
commands.append(args)
|
||||||
|
|
||||||
|
return os.path.join(full_path, parts[-1])
|
||||||
|
|
||||||
|
def FixId(path, library_name):
|
||||||
|
id = '@executable_path/../Frameworks/%s' % library_name
|
||||||
|
args = ['install_name_tool', '-id', id, path]
|
||||||
|
commands.append(args)
|
||||||
|
|
||||||
|
def FixLibraryId(path):
|
||||||
|
library_name = os.path.basename(path)
|
||||||
|
FixId(path, library_name)
|
||||||
|
|
||||||
|
def FixFrameworkId(path, id):
|
||||||
|
FixId(path, id)
|
||||||
|
|
||||||
|
def FixInstallPath(library_path, library, new_path):
|
||||||
|
args = ['install_name_tool', '-change', library_path, new_path, library]
|
||||||
|
commands.append(args)
|
||||||
|
|
||||||
|
def FindSystemLibrary(library_name):
|
||||||
|
for path in ['/lib', '/usr/lib']:
|
||||||
|
full_path = os.path.join(path, library_name)
|
||||||
|
if os.path.exists(full_path):
|
||||||
|
return full_path
|
||||||
|
return None
|
||||||
|
|
||||||
|
def FixLibraryInstallPath(library_path, library):
|
||||||
|
system_library = FindSystemLibrary(os.path.basename(library_path))
|
||||||
|
if system_library is None:
|
||||||
|
new_path = '@executable_path/../Frameworks/%s' % os.path.basename(library_path)
|
||||||
|
FixInstallPath(library_path, library, new_path)
|
||||||
|
else:
|
||||||
|
FixInstallPath(library_path, library, system_library)
|
||||||
|
|
||||||
|
def FixFrameworkInstallPath(library_path, library):
|
||||||
|
parts = library_path.split(os.sep)
|
||||||
|
for i, part in enumerate(parts):
|
||||||
|
if re.match(r'\w+\.framework', part):
|
||||||
|
full_path = os.path.join(*parts[i:])
|
||||||
|
break
|
||||||
|
new_path = '@executable_path/../Frameworks/%s' % full_path
|
||||||
|
FixInstallPath(library_path, library, new_path)
|
||||||
|
|
||||||
|
def FindQtPlugin(name):
|
||||||
|
for path in QT_PLUGINS_SEARCH_PATH:
|
||||||
|
if os.path.exists(path):
|
||||||
|
if os.path.exists(os.path.join(path, name)):
|
||||||
|
return os.path.join(path, name)
|
||||||
|
raise CouldNotFindQtPluginError(name)
|
||||||
|
|
||||||
|
|
||||||
|
def FindVLCPlugin(name):
|
||||||
|
for path in VLC_SEARCH_PATH:
|
||||||
|
if os.path.exists(path):
|
||||||
|
if os.path.exists(os.path.join(path, name)):
|
||||||
|
return os.path.join(path, name)
|
||||||
|
raise CouldNotFindVLCPluginError(name)
|
||||||
|
|
||||||
|
FixBinary(binary)
|
||||||
|
|
||||||
|
for plugin in VLC_PLUGINS:
|
||||||
|
FixVLCPlugin(FindVLCPlugin(plugin), '.')
|
||||||
|
|
||||||
|
for plugin in TOMAHAWK_PLUGINS:
|
||||||
|
FixPlugin(plugin, '../MacOS')
|
||||||
|
|
||||||
|
try:
|
||||||
|
FixPlugin('spotify_tomahawkresolver', '../MacOS')
|
||||||
|
except:
|
||||||
|
print 'Failed to find spotify resolver'
|
||||||
|
|
||||||
|
for plugin in QT_PLUGINS:
|
||||||
|
FixPlugin(FindQtPlugin(plugin), os.path.dirname(plugin))
|
||||||
|
|
||||||
|
if len(sys.argv) <= 2:
|
||||||
|
print 'Would run %d commands:' % len(commands)
|
||||||
|
for command in commands:
|
||||||
|
print ' '.join(command)
|
||||||
|
|
||||||
|
print 'OK?'
|
||||||
|
raw_input()
|
||||||
|
|
||||||
|
for command in commands:
|
||||||
|
p = subprocess.Popen(command)
|
||||||
|
os.waitpid(p.pid, 0)
|
@@ -1,2 +1,2 @@
|
|||||||
[Paths]
|
[Paths]
|
||||||
Plugins = plugins
|
Plugins = PlugIns
|
||||||
|
@@ -1,20 +1,27 @@
|
|||||||
|
SET(MINGW_PREFIX "i686-w64-mingw32")
|
||||||
|
|
||||||
# this one is important
|
# this one is important
|
||||||
SET(CMAKE_SYSTEM_NAME Windows)
|
SET(CMAKE_SYSTEM_NAME Windows)
|
||||||
|
|
||||||
# specify the cross compiler
|
# specify the cross compiler
|
||||||
SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
|
SET(CMAKE_C_COMPILER ccache ${MINGW_PREFIX}-gcc)
|
||||||
SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
|
SET(CMAKE_CXX_COMPILER ccache ${MINGW_PREFIX}-g++)
|
||||||
|
SET(CMAKE_RC_COMPILER /usr/bin/${MINGW_PREFIX}-windres)
|
||||||
|
|
||||||
# where is the target environment containing libraries
|
# where is the target environment containing libraries
|
||||||
SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32/sys-root/mingw)
|
SET(CMAKE_FIND_ROOT_PATH /usr/${MINGW_PREFIX}/sys-root/mingw)
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
|
|
||||||
# windres executable for application icon support
|
|
||||||
SET(WINDRES_EXECUTABLE /usr/bin/i686-w64-mingw32-windres)
|
|
||||||
|
|
||||||
# libs with broken find modules
|
# libs with broken find modules
|
||||||
SET(TAGLIB_FOUND true)
|
SET(TAGLIB_FOUND true)
|
||||||
SET(TAGLIB_LIBRARIES ${CMAKE_FIND_ROOT_PATH}/lib/libtag.dll.a)
|
SET(TAGLIB_LIBRARIES ${CMAKE_FIND_ROOT_PATH}/lib/libtag.dll.a)
|
||||||
SET(TAGLIB_INCLUDES ${CMAKE_FIND_ROOT_PATH}/include/taglib)
|
SET(TAGLIB_INCLUDES ${CMAKE_FIND_ROOT_PATH}/include/taglib)
|
||||||
|
|
||||||
|
SET(QT_PLUGINS_DIR ${CMAKE_FIND_ROOT_PATH}/lib/qt4/plugins/)
|
||||||
|
SET(QT_QTUITOOLS_LIBRARY_RELEASE ${CMAKE_FIND_ROOT_PATH}/lib/libQtUiTools.a)
|
||||||
|
SET(QT_QTUITOOLS_LIBRARY_DEBUG ${CMAKE_FIND_ROOT_PATH}/lib/libQtUiToolsd.a)
|
||||||
|
SET(QT_QTUITOOLS_LIBRARY ${QT_QTUITOOLS_LIBRARY_RELEASE})
|
@@ -1 +0,0 @@
|
|||||||
105
|
|
@@ -1,20 +1,49 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
echo "Remove old vlc dir..."
|
echo "Remove old vlc dir..."
|
||||||
|
|
||||||
|
mkdir -p vlc/
|
||||||
|
cd vlc/
|
||||||
|
|
||||||
#rm -vf vlc-*.7z
|
#rm -vf vlc-*.7z
|
||||||
rm -rf vlc/
|
#rm -rf vlc/
|
||||||
|
|
||||||
echo "Download specified binary..."
|
echo "Download specified binary..."
|
||||||
#wget -c "http://downloads.sourceforge.net/project/vlc/1.1.9/win32/vlc-1.1.9-win32.7z?r=http%3A%2F%2Fwww.videolan.org%2Fvlc%2Fdownload-windows.html&ts=1306272584&use_mirror=leaseweb"
|
#wget -c "http://downloads.sourceforge.net/project/vlc/1.1.9/win32/vlc-1.1.9-win32.7z?r=http%3A%2F%2Fwww.videolan.org%2Fvlc%2Fdownload-windows.html&ts=1306272584&use_mirror=leaseweb"
|
||||||
wget -c "http://nightlies.videolan.org/build/win32/trunk-20110524-1321/vlc-1.2.0-git-20110524-1321-win32.7z"
|
#wget -c "http://download.tomahawk-player.org/tomahawk-vlc-0.1.zip"
|
||||||
|
wget -c http://people.videolan.org/~jb/phonon/phonon-vlc-last.7z
|
||||||
|
|
||||||
echo "Extract binary..."
|
echo "Extract binary..."
|
||||||
7z x vlc-*.7z
|
7z x phonon-vlc-last.7z
|
||||||
mv -v vlc-*/ vlc/
|
#mv -v vlc-*/ vlc/
|
||||||
|
#unzip tomahawk-vlc-0.1.zip
|
||||||
|
|
||||||
echo "Strip unneeded plugins from vlc/plugins..."
|
echo "Strip unneeded plugins from vlc/plugins..."
|
||||||
cd vlc/plugins/
|
cd prefix/bin/plugins
|
||||||
rm -rvf video_*/ gui/ */libold* */libvcd* */libdvd* */liblibass* */libx264* */libschroe* */liblibmpeg2* \
|
rm -rvf libold* libvcd* libdvd* liblibass* libx264* libschroe* liblibmpeg2* \
|
||||||
*/libstream_out_* */libmjpeg_plugin* */libh264_plugin* */libzvbi_plugin* */lib*sub*
|
libstream_out_* libmjpeg_plugin* libh264_plugin* libzvbi_plugin* lib*sub* \
|
||||||
|
*qt4* *skins2* libaccess_bd_plugin.dll \
|
||||||
|
libaudiobargraph_* libball_plugin.dll \
|
||||||
|
libdirac_plugin.dll \
|
||||||
|
libgnutls_plugin.dll \
|
||||||
|
libcaca_plugin.dll \
|
||||||
|
libfreetype_plugin.dll \
|
||||||
|
libaccess_output_shout_plugin.dll \
|
||||||
|
libremoteosd_plugin.dll \
|
||||||
|
libsdl_image_plugin.dll \
|
||||||
|
libvout_sdl_plugin.dll \
|
||||||
|
libpng_plugin.dll \
|
||||||
|
libgoom_plugin.dll \
|
||||||
|
libatmo_plugin.dll \
|
||||||
|
libmux_ts_plugin.dll \
|
||||||
|
libkate_plugin.dll \
|
||||||
|
libtaglib_plugin.dll
|
||||||
|
|
||||||
|
|
||||||
|
# this is for vlc-1.2
|
||||||
|
# rm -rvf video_*/ gui/ */libold* */libvcd* */libdvd* */liblibass* */libx264* */libschroe* */liblibmpeg2* \
|
||||||
|
# */libstream_out_* */libmjpeg_plugin* */libh264_plugin* */libzvbi_plugin* */lib*sub* \
|
||||||
|
# services_discover/ visualization/ control/ misc/
|
||||||
|
|
||||||
|
|
||||||
echo "Downloaded and stripped VLC"
|
echo "Downloaded and stripped VLC"
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 643 B After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 856 B After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 7.3 KiB |
BIN
data/images/album-shadow.png
Normal file
After Width: | Height: | Size: 204 KiB |
Before Width: | Height: | Size: 691 B After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 666 B After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 650 B After Width: | Height: | Size: 2.9 KiB |
BIN
data/images/automatic-playlist.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
data/images/avatar_frame.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 260 KiB |
Before Width: | Height: | Size: 717 B After Width: | Height: | Size: 1.8 KiB |
BIN
data/images/dashboard.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
data/images/filter.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 260 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 1.7 KiB |
BIN
data/images/info.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 564 B After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 332 B After Width: | Height: | Size: 13 KiB |
BIN
data/images/loved.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
data/images/loved_playlist.png
Normal file
After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 352 B |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 7.3 KiB |
BIN
data/images/new-additions.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.0 MiB |
BIN
data/images/no-artist-image-placeholder.png
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
data/images/not-loved.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 500 B After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
data/images/post.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 1.1 KiB |
BIN
data/images/share.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 771 B After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 325 B After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 844 B |
Before Width: | Height: | Size: 858 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
BIN
data/images/station.png
Normal file
After Width: | Height: | Size: 563 KiB |
Before Width: | Height: | Size: 589 B |
Before Width: | Height: | Size: 301 B |
Before Width: | Height: | Size: 530 B |
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 3.1 KiB |
BIN
data/images/track-placeholder.png
Normal file
After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 931 B After Width: | Height: | Size: 2.0 KiB |
320
data/js/tomahawk.js
Normal file
@@ -0,0 +1,320 @@
|
|||||||
|
|
||||||
|
// if run in phantomjs add fake Tomahawk environment
|
||||||
|
if(window.Tomahawk === undefined)
|
||||||
|
{
|
||||||
|
alert("PHANTOMJS ENVIRONMENT");
|
||||||
|
var Tomahawk = {
|
||||||
|
fakeEnv: function()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
resolverData: function()
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
scriptPath: function()
|
||||||
|
{
|
||||||
|
return "/home/tomahawk/resolver.js";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
log: function( message )
|
||||||
|
{
|
||||||
|
console.log( message );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Tomahawk.resolver = {
|
||||||
|
scriptPath: Tomahawk.resolverData().scriptPath
|
||||||
|
};
|
||||||
|
|
||||||
|
Tomahawk.timestamp = function() {
|
||||||
|
return Math.round( new Date()/1000 );
|
||||||
|
};
|
||||||
|
|
||||||
|
Tomahawk.dumpResult = function( result ) {
|
||||||
|
var results = result.results;
|
||||||
|
Tomahawk.log("Dumping " + results.length + " results for query " + result.qid + "...");
|
||||||
|
for(var i=0; i<results.length;i++)
|
||||||
|
{
|
||||||
|
var result1 = results[i];
|
||||||
|
Tomahawk.log( result1.artist + " - " + result1.track + " | " + result1.url );
|
||||||
|
}
|
||||||
|
|
||||||
|
Tomahawk.log("Done.");
|
||||||
|
};
|
||||||
|
|
||||||
|
// javascript part of Tomahawk-Object API
|
||||||
|
Tomahawk.extend = function(object, members) {
|
||||||
|
var F = function() {};
|
||||||
|
F.prototype = object;
|
||||||
|
var newObject = new F;
|
||||||
|
|
||||||
|
for(var key in members)
|
||||||
|
{
|
||||||
|
newObject[key] = members[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
return newObject;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Resolver BaseObject, inherit it to implement your own resolver
|
||||||
|
var TomahawkResolver = {
|
||||||
|
init: function()
|
||||||
|
{
|
||||||
|
},
|
||||||
|
scriptPath: function()
|
||||||
|
{
|
||||||
|
return Tomahawk.resolverData().scriptPath;
|
||||||
|
},
|
||||||
|
getConfigUi: function()
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
getUserConfig: function()
|
||||||
|
{
|
||||||
|
var configJson = window.localStorage[ this.scriptPath() ];
|
||||||
|
if( configJson === undefined )
|
||||||
|
{
|
||||||
|
configJson = "{}";
|
||||||
|
}
|
||||||
|
|
||||||
|
var config = JSON.parse( configJson );
|
||||||
|
|
||||||
|
return config;
|
||||||
|
},
|
||||||
|
saveUserConfig: function()
|
||||||
|
{
|
||||||
|
var config = Tomahawk.resolverData().config;
|
||||||
|
var configJson = JSON.stringify( config );
|
||||||
|
|
||||||
|
window.localStorage[ this.scriptPath() ] = configJson;
|
||||||
|
},
|
||||||
|
resolve: function( qid, artist, album, title )
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
qid: qid
|
||||||
|
};
|
||||||
|
},
|
||||||
|
search: function( qid, searchString )
|
||||||
|
{
|
||||||
|
return this.resolve( qid, "", "", searchString );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**** begin example implementation of a resolver ****/
|
||||||
|
|
||||||
|
|
||||||
|
// implement the resolver
|
||||||
|
/*
|
||||||
|
* var DemoResolver = Tomahawk.extend(TomahawkResolver,
|
||||||
|
* {
|
||||||
|
* getSettings: function()
|
||||||
|
* {
|
||||||
|
* return {
|
||||||
|
* name: "Demo Resolver",
|
||||||
|
* weigth: 95,
|
||||||
|
* timeout: 5,
|
||||||
|
* limit: 10
|
||||||
|
};
|
||||||
|
},
|
||||||
|
resolve: function( qid, artist, album, track )
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
qid: qid,
|
||||||
|
results: [
|
||||||
|
{
|
||||||
|
artist: "Mokele",
|
||||||
|
album: "You Yourself are Me Myself and I am in Love",
|
||||||
|
track: "Hiding In Your Insides (php)",
|
||||||
|
source: "Mokele.co.uk",
|
||||||
|
url: "http://play.mokele.co.uk/music/Hiding%20In%20Your%20Insides.mp3",
|
||||||
|
bitrate: 160,
|
||||||
|
duration: 248,
|
||||||
|
size: 4971780,
|
||||||
|
score: 1.0,
|
||||||
|
extension: "mp3",
|
||||||
|
mimetype: "audio/mpeg"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// register the resolver
|
||||||
|
Tomahawk.resolver.instance = DemoResolver;*/
|
||||||
|
|
||||||
|
/**** end example implementation of a resolver ****/
|
||||||
|
|
||||||
|
|
||||||
|
// help functions
|
||||||
|
|
||||||
|
Tomahawk.valueForSubNode = function(node, tag)
|
||||||
|
{
|
||||||
|
if(node === undefined)
|
||||||
|
{
|
||||||
|
throw new Error("Tomahawk.valueForSubnode: node is undefined!");
|
||||||
|
}
|
||||||
|
|
||||||
|
var element = node.getElementsByTagName(tag)[0];
|
||||||
|
if( element === undefined )
|
||||||
|
{
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
return element.textContent;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Tomahawk.syncRequest = function(url)
|
||||||
|
{
|
||||||
|
var xmlHttpRequest = new XMLHttpRequest();
|
||||||
|
xmlHttpRequest.open('GET', url, false);
|
||||||
|
xmlHttpRequest.send(null);
|
||||||
|
if (xmlHttpRequest.status == 200){
|
||||||
|
return xmlHttpRequest.responseText;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Secure Hash Algorithm (SHA256)
|
||||||
|
* http://www.webtoolkit.info/
|
||||||
|
*
|
||||||
|
* Original code by Angel Marin, Paul Johnston.
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
|
||||||
|
Tomahawk.sha256=function(s){
|
||||||
|
|
||||||
|
var chrsz = 8;
|
||||||
|
var hexcase = 0;
|
||||||
|
|
||||||
|
function safe_add (x, y) {
|
||||||
|
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
|
||||||
|
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
||||||
|
return (msw << 16) | (lsw & 0xFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
function S (X, n) { return ( X >>> n ) | (X << (32 - n)); }
|
||||||
|
function R (X, n) { return ( X >>> n ); }
|
||||||
|
function Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }
|
||||||
|
function Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }
|
||||||
|
function Sigma0256(x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }
|
||||||
|
function Sigma1256(x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }
|
||||||
|
function Gamma0256(x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }
|
||||||
|
function Gamma1256(x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }
|
||||||
|
|
||||||
|
function core_sha256 (m, l) {
|
||||||
|
var K = new Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);
|
||||||
|
var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
|
||||||
|
var W = new Array(64);
|
||||||
|
var a, b, c, d, e, f, g, h, i, j;
|
||||||
|
var T1, T2;
|
||||||
|
|
||||||
|
m[l >> 5] |= 0x80 << (24 - l % 32);
|
||||||
|
m[((l + 64 >> 9) << 4) + 15] = l;
|
||||||
|
|
||||||
|
for ( i = 0; i<m.length; i+=16 ) {
|
||||||
|
a = HASH[0];
|
||||||
|
b = HASH[1];
|
||||||
|
c = HASH[2];
|
||||||
|
d = HASH[3];
|
||||||
|
e = HASH[4];
|
||||||
|
f = HASH[5];
|
||||||
|
g = HASH[6];
|
||||||
|
h = HASH[7];
|
||||||
|
|
||||||
|
for ( j = 0; j<64; j++) {
|
||||||
|
if (j < 16)
|
||||||
|
{
|
||||||
|
W[j] = m[j + i];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]);
|
||||||
|
}
|
||||||
|
|
||||||
|
T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]);
|
||||||
|
T2 = safe_add(Sigma0256(a), Maj(a, b, c));
|
||||||
|
|
||||||
|
h = g;
|
||||||
|
g = f;
|
||||||
|
f = e;
|
||||||
|
e = safe_add(d, T1);
|
||||||
|
d = c;
|
||||||
|
c = b;
|
||||||
|
b = a;
|
||||||
|
a = safe_add(T1, T2);
|
||||||
|
}
|
||||||
|
|
||||||
|
HASH[0] = safe_add(a, HASH[0]);
|
||||||
|
HASH[1] = safe_add(b, HASH[1]);
|
||||||
|
HASH[2] = safe_add(c, HASH[2]);
|
||||||
|
HASH[3] = safe_add(d, HASH[3]);
|
||||||
|
HASH[4] = safe_add(e, HASH[4]);
|
||||||
|
HASH[5] = safe_add(f, HASH[5]);
|
||||||
|
HASH[6] = safe_add(g, HASH[6]);
|
||||||
|
HASH[7] = safe_add(h, HASH[7]);
|
||||||
|
}
|
||||||
|
return HASH;
|
||||||
|
}
|
||||||
|
|
||||||
|
function str2binb (str) {
|
||||||
|
var bin = Array();
|
||||||
|
var mask = (1 << chrsz) - 1;
|
||||||
|
for(var i = 0; i < str.length * chrsz; i += chrsz) {
|
||||||
|
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
|
||||||
|
}
|
||||||
|
return bin;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Utf8Encode(string) {
|
||||||
|
string = string.replace(/\r\n/g,"\n");
|
||||||
|
var utftext = "";
|
||||||
|
|
||||||
|
for (var n = 0; n < string.length; n++) {
|
||||||
|
|
||||||
|
var c = string.charCodeAt(n);
|
||||||
|
|
||||||
|
if (c < 128) {
|
||||||
|
utftext += String.fromCharCode(c);
|
||||||
|
}
|
||||||
|
else if((c > 127) && (c < 2048)) {
|
||||||
|
utftext += String.fromCharCode((c >> 6) | 192);
|
||||||
|
utftext += String.fromCharCode((c & 63) | 128);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
utftext += String.fromCharCode((c >> 12) | 224);
|
||||||
|
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
||||||
|
utftext += String.fromCharCode((c & 63) | 128);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return utftext;
|
||||||
|
}
|
||||||
|
|
||||||
|
function binb2hex (binarray) {
|
||||||
|
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
|
||||||
|
var str = "";
|
||||||
|
for(var i = 0; i < binarray.length * 4; i++) {
|
||||||
|
str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
|
||||||
|
hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
s = Utf8Encode(s);
|
||||||
|
return binb2hex(core_sha256(str2binb(s), s.length * chrsz));
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// some aliases
|
||||||
|
Tomahawk.setTimeout = window.setTimeout;
|
||||||
|
Tomahawk.setInterval = window.setInterval;
|
22
data/sql/dbmigrate-23_to_24.sql
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
-- Script to migate from db version 23 to 24.
|
||||||
|
-- Added the social_attributes table.
|
||||||
|
--
|
||||||
|
-- Separate each command with %%
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS social_attributes (
|
||||||
|
id INTEGER REFERENCES track(id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED, -- track id
|
||||||
|
source INTEGER REFERENCES source(id) ON DELETE CASCADE ON UPDATE CASCADE, -- DEFERRABLE INITIALLY DEFERRED,
|
||||||
|
k TEXT NOT NULL,
|
||||||
|
v TEXT NOT NULL,
|
||||||
|
timestamp INTEGER NOT NULL DEFAULT 0
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX social_attrib_id ON social_attributes(id);
|
||||||
|
|
||||||
|
CREATE INDEX social_attrib_source ON social_attributes(source);
|
||||||
|
|
||||||
|
CREATE INDEX social_attrib_k ON social_attributes(k);
|
||||||
|
|
||||||
|
CREATE INDEX social_attrib_timestamp ON social_attributes(timestamp);
|
||||||
|
|
||||||
|
UPDATE settings SET v = '24' WHERE k == 'schema_version';
|
17
data/sql/dbmigrate-24_to_25.sql
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
-- Script to migate from db version 24 to 25.
|
||||||
|
-- Added the social_attributes table.
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE dynamic_playlist RENAME TO tmp_dynamic_playlist;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS dynamic_playlist (
|
||||||
|
guid TEXT NOT NULL REFERENCES playlist(guid) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
||||||
|
pltype TEXT, -- the generator type
|
||||||
|
plmode INTEGER -- the mode of this playlist
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO dynamic_playlist( guid, pltype, plmode ) SELECT guid, pltype, plmode FROM tmp_dynamic_playlist;
|
||||||
|
|
||||||
|
DROP TABLE tmp_dynamic_playlist;
|
||||||
|
|
||||||
|
UPDATE settings SET v = '25' WHERE k == 'schema_version';
|
8
data/sql/dbmigrate-25_to_26.sql
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
-- Script to migate from db version 25 to 26.
|
||||||
|
-- Added the "autoload" column to dynamic_playlist
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE dynamic_playlist ADD COLUMN autoload BOOLEAN DEFAULT 'true';
|
||||||
|
|
||||||
|
UPDATE settings SET v = '26' WHERE k == 'schema_version';
|
@@ -119,22 +119,22 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
||||||
<source>Name</source>
|
<source>Name</source>
|
||||||
<translation type="unfinished">Name</translation>
|
<translation>Name</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
||||||
<source>Tracks</source>
|
<source>Tracks</source>
|
||||||
<translation type="unfinished">Stücke</translation>
|
<translation>Stücke</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
||||||
<source>Duration</source>
|
<source>Duration</source>
|
||||||
<translation type="unfinished">Spieldauer</translation>
|
<translation>Spieldauer</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
||||||
<source>Origin</source>
|
<source>Origin</source>
|
||||||
<translation type="unfinished">Quelle</translation>
|
<translation>Quelle</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -142,17 +142,17 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="75"/>
|
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="75"/>
|
||||||
<source>&Play</source>
|
<source>&Play</source>
|
||||||
<translation type="unfinished">&Abspielen</translation>
|
<translation>&Abspielen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="76"/>
|
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="76"/>
|
||||||
<source>Add to &Queue</source>
|
<source>Add to &Queue</source>
|
||||||
<translation type="unfinished">Zur &Warteschlange hinzufügen</translation>
|
<translation>In &Warteschlange einreihen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="108"/>
|
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="108"/>
|
||||||
<source>This collection is empty.</source>
|
<source>This collection is empty.</source>
|
||||||
<translation type="unfinished">Diese Sammlung ist leer.</translation>
|
<translation>Diese Sammlung ist leer.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -175,19 +175,19 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/sip/jabber/jabber.cpp" line="124"/>
|
<location filename="src/sip/jabber/jabber.cpp" line="124"/>
|
||||||
<source>Add Friend...</source>
|
<source>Add Friend...</source>
|
||||||
<translation type="unfinished">Freund hinzufügen…</translation>
|
<translation>Freund hinzufügen…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/sip/jabber/jabber.cpp" line="169"/>
|
<location filename="src/sip/jabber/jabber.cpp" line="169"/>
|
||||||
<location filename="src/sip/jreen/jabber.cpp" line="183"/>
|
<location filename="src/sip/jreen/jabber.cpp" line="183"/>
|
||||||
<source>Add Friend</source>
|
<source>Add Friend</source>
|
||||||
<translation type="unfinished">Freund hinzufügen</translation>
|
<translation>Freund hinzufügen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/sip/jabber/jabber.cpp" line="170"/>
|
<location filename="src/sip/jabber/jabber.cpp" line="170"/>
|
||||||
<location filename="src/sip/jreen/jabber.cpp" line="184"/>
|
<location filename="src/sip/jreen/jabber.cpp" line="184"/>
|
||||||
<source>Enter Jabber ID:</source>
|
<source>Enter Jabber ID:</source>
|
||||||
<translation type="unfinished">Jabber-ID eingeben:</translation>
|
<translation>Jabber-ID eingeben:</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -208,27 +208,27 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/newplaylistwidget.ui" line="22"/>
|
<location filename="src/libtomahawk/widgets/newplaylistwidget.ui" line="22"/>
|
||||||
<source>Enter a title for the new playlist:</source>
|
<source>Enter a title for the new playlist:</source>
|
||||||
<translation type="unfinished">Gib einen Titel für die neue Playliste ein:</translation>
|
<translation>Gib einen Titel für die neue Playliste ein:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/newplaylistwidget.ui" line="44"/>
|
<location filename="src/libtomahawk/widgets/newplaylistwidget.ui" line="44"/>
|
||||||
<source>Tomahawk offers a variety of ways to help you create playlists and find music you enjoy!</source>
|
<source>Tomahawk offers a variety of ways to help you create playlists and find music you enjoy!</source>
|
||||||
<translation type="unfinished">Tomahawk bietet verschiedene Wege, Playlisten zu erstellen und Musik zu finden, die du magst!</translation>
|
<translation>Tomahawk bietet verschiedene Wege, Playlisten zu erstellen und Musik zu finden, die du magst!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/newplaylistwidget.ui" line="59"/>
|
<location filename="src/libtomahawk/widgets/newplaylistwidget.ui" line="59"/>
|
||||||
<source>Just enter a genre or tag name and Tomahawk will suggest a few songs to get you started with your new playlist:</source>
|
<source>Just enter a genre or tag name and Tomahawk will suggest a few songs to get you started with your new playlist:</source>
|
||||||
<translation type="unfinished">Gib einfach ein Genre oder einen Tagnamen ein und Tomahawk wird dir einige Lieder vorschlagen, um dir zu helfen, eine neue Playliste zu erstellen:</translation>
|
<translation>Gib einfach ein Genre oder einen Tagnamen ein, und Tomahawk wird dir einige Lieder vorschlagen und dir helfen eine neue Playliste zu erstellen:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/newplaylistwidget.cpp" line="45"/>
|
<location filename="src/libtomahawk/widgets/newplaylistwidget.cpp" line="45"/>
|
||||||
<source>&Create Playlist</source>
|
<source>&Create Playlist</source>
|
||||||
<translation type="unfinished">Playliste &erstellen</translation>
|
<translation>Playliste &erstellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/newplaylistwidget.h" line="51"/>
|
<location filename="src/libtomahawk/widgets/newplaylistwidget.h" line="51"/>
|
||||||
<source>Create a new playlist</source>
|
<source>Create a new playlist</source>
|
||||||
<translation type="unfinished">Erstelle eine neue Playliste</translation>
|
<translation>Erstelle eine neue Playliste</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -270,27 +270,27 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="74"/>
|
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="74"/>
|
||||||
<source>&Play</source>
|
<source>&Play</source>
|
||||||
<translation type="unfinished">&Abspielen</translation>
|
<translation>&Abspielen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="75"/>
|
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="75"/>
|
||||||
<source>Add to &Queue</source>
|
<source>Add to &Queue</source>
|
||||||
<translation type="unfinished">In &Warteschlange einreihen</translation>
|
<translation>In &Warteschlange einreihen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="79"/>
|
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="79"/>
|
||||||
<source>&Delete Items</source>
|
<source>&Delete Items</source>
|
||||||
<translation type="unfinished">Elemente &entfernen</translation>
|
<translation>Elemente &entfernen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="79"/>
|
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="79"/>
|
||||||
<source>&Delete Item</source>
|
<source>&Delete Item</source>
|
||||||
<translation type="unfinished">Element &entfernen</translation>
|
<translation>Element &entfernen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="143"/>
|
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="143"/>
|
||||||
<source>This playlist is currently empty. Add some tracks to it and enjoy the music!</source>
|
<source>This playlist is currently empty. Add some tracks to it and enjoy the music!</source>
|
||||||
<translation type="unfinished">Die Playliste ist derzeit leer. Füge einige Stücke hinzu und genieße die Musik!</translation>
|
<translation>Die Playliste ist derzeit leer. Füge einige Stücke hinzu und genieße die Musik!</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -359,18 +359,18 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="30"/>
|
<location filename="src/settingsdialog.ui" line="30"/>
|
||||||
<source>Jabber</source>
|
<source>Jabber</source>
|
||||||
<translation type="unfinished">Jabber</translation>
|
<translation>Jabber</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="53"/>
|
<location filename="src/settingsdialog.ui" line="53"/>
|
||||||
<source>Jabber ID:</source>
|
<source>Jabber ID:</source>
|
||||||
<translation type="unfinished">Jabber-ID:</translation>
|
<translation>Jabber-ID:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="79"/>
|
<location filename="src/settingsdialog.ui" line="79"/>
|
||||||
<location filename="src/settingsdialog.ui" line="524"/>
|
<location filename="src/settingsdialog.ui" line="524"/>
|
||||||
<source>Password:</source>
|
<source>Password:</source>
|
||||||
<translation type="unfinished">Passwort:</translation>
|
<translation>Passwort:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="132"/>
|
<location filename="src/settingsdialog.ui" line="132"/>
|
||||||
@@ -380,138 +380,138 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="152"/>
|
<location filename="src/settingsdialog.ui" line="152"/>
|
||||||
<source>Server:</source>
|
<source>Server:</source>
|
||||||
<translation type="unfinished">Server:</translation>
|
<translation>Server:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="175"/>
|
<location filename="src/settingsdialog.ui" line="175"/>
|
||||||
<source>Port:</source>
|
<source>Port:</source>
|
||||||
<translation type="unfinished">Port:</translation>
|
<translation>Port:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="238"/>
|
<location filename="src/settingsdialog.ui" line="238"/>
|
||||||
<source>Network</source>
|
<source>Network</source>
|
||||||
<translation type="unfinished">Netzwerk</translation>
|
<translation>Netzwerk</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="250"/>
|
<location filename="src/settingsdialog.ui" line="250"/>
|
||||||
<source>Advanced Network Settings</source>
|
<source>Advanced Network Settings</source>
|
||||||
<translation type="unfinished">Erweiterte Netzwerkeinstellungen</translation>
|
<translation>Erweiterte Netzwerkeinstellungen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="267"/>
|
<location filename="src/settingsdialog.ui" line="267"/>
|
||||||
<source>If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!</source>
|
<source>If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!</source>
|
||||||
<translation type="unfinished">Wenn du Schwierigkeiten hast, zu anderen Leuten zu verbinden, versuche diene externe IP-Addresse/Rechnernamen und eine Portnummer (Standard 50210) hier einzutragen. Stelle sicher, den Port entsprechend an diesen Rechner weiterzuleiten!</translation>
|
<translation>Wenn du Schwierigkeiten hast, dich mit anderen Leuten zu verbinden, versuche deine externe IP-Adresse/Rechnernamen und eine Portnummer (Standard 50210) hier einzutragen. Stelle sicher, den Port entsprechend an diesen Rechner weiterzuleiten!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="285"/>
|
<location filename="src/settingsdialog.ui" line="285"/>
|
||||||
<source>Static Host Name:</source>
|
<source>Static Host Name:</source>
|
||||||
<translation type="unfinished">Statischer Rechnername:</translation>
|
<translation>Statischer Rechnername:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="301"/>
|
<location filename="src/settingsdialog.ui" line="301"/>
|
||||||
<source>Static Port:</source>
|
<source>Static Port:</source>
|
||||||
<translation type="unfinished">Statischer Port:</translation>
|
<translation>Statischer Port:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="323"/>
|
<location filename="src/settingsdialog.ui" line="323"/>
|
||||||
<source>Always use static host name/port? (Overrides UPnP discovery/port forwarding)</source>
|
<source>Always use static host name/port? (Overrides UPnP discovery/port forwarding)</source>
|
||||||
<translation type="unfinished">Statischen Rechnernamen/Port immer benutzen? (Überschreibt UPnP-discovery/Portweiterleitung)</translation>
|
<translation>Statischen Rechnernamen/Port immer benutzen? (Überschreibt UPnP-discovery/Portweiterleitung)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="347"/>
|
<location filename="src/settingsdialog.ui" line="347"/>
|
||||||
<source>Proxy Settings...</source>
|
<source>Proxy Settings...</source>
|
||||||
<translation type="unfinished">Proxy-Einstellungen…</translation>
|
<translation>Proxy-Einstellungen…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="385"/>
|
<location filename="src/settingsdialog.ui" line="385"/>
|
||||||
<source>Playdar HTTP API</source>
|
<source>Playdar HTTP API</source>
|
||||||
<translation type="unfinished">Playdar HTTP API</translation>
|
<translation>Playdar HTTP API</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="398"/>
|
<location filename="src/settingsdialog.ui" line="398"/>
|
||||||
<source>Connect automatically when Tomahawk starts</source>
|
<source>Connect automatically when Tomahawk starts</source>
|
||||||
<translation type="unfinished">Automatisch beim Start von Tomahawk verbinden</translation>
|
<translation>Automatisch beim Start von Tomahawk verbinden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="411"/>
|
<location filename="src/settingsdialog.ui" line="411"/>
|
||||||
<source>Use UPnP to establish port forward</source>
|
<source>Use UPnP to establish port forward</source>
|
||||||
<translation type="unfinished">Benutze UPnP um die Portweiterleitung zu konfigurieren</translation>
|
<translation>Benutze UPnP um die Portweiterleitung einzurichten</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="425"/>
|
<location filename="src/settingsdialog.ui" line="425"/>
|
||||||
<source>Local Music</source>
|
<source>Local Music</source>
|
||||||
<translation type="unfinished">Lokale Musik</translation>
|
<translation>Lokale Musik</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="436"/>
|
<location filename="src/settingsdialog.ui" line="436"/>
|
||||||
<source>Path to scan for music files:</source>
|
<source>Path to scan for music files:</source>
|
||||||
<translation type="unfinished">Pfad zu den Musikdateien:</translation>
|
<translation>Pfad zu den Musikdateien:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="448"/>
|
<location filename="src/settingsdialog.ui" line="448"/>
|
||||||
<source>...</source>
|
<source>...</source>
|
||||||
<translation type="unfinished">…</translation>
|
<translation>…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="490"/>
|
<location filename="src/settingsdialog.ui" line="490"/>
|
||||||
<source>Last.fm</source>
|
<source>Last.fm</source>
|
||||||
<translation type="unfinished">Last.fm</translation>
|
<translation>Last.fm</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="499"/>
|
<location filename="src/settingsdialog.ui" line="499"/>
|
||||||
<source>Scrobble tracks to Last.fm</source>
|
<source>Scrobble tracks to Last.fm</source>
|
||||||
<translation type="unfinished">Gespielte Stücke an Last.fm übertragen</translation>
|
<translation>Gespielte Stücke an Last.fm übertragen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="506"/>
|
<location filename="src/settingsdialog.ui" line="506"/>
|
||||||
<source>Last.fm Login</source>
|
<source>Last.fm Login</source>
|
||||||
<translation type="unfinished">Last.fm Anmeldung</translation>
|
<translation>Last.fm Anmeldung</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="514"/>
|
<location filename="src/settingsdialog.ui" line="514"/>
|
||||||
<source>Username:</source>
|
<source>Username:</source>
|
||||||
<translation type="unfinished">Benutzername:</translation>
|
<translation>Benutzername:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="540"/>
|
<location filename="src/settingsdialog.ui" line="540"/>
|
||||||
<source>Test Login</source>
|
<source>Test Login</source>
|
||||||
<translation type="unfinished">Anmeldung Testen</translation>
|
<translation>Anmeldung testen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="564"/>
|
<location filename="src/settingsdialog.ui" line="564"/>
|
||||||
<source>Script Resolvers</source>
|
<source>Script Resolvers</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Script Resolver</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.ui" line="570"/>
|
<location filename="src/settingsdialog.ui" line="570"/>
|
||||||
<source>Loaded script resolvers:</source>
|
<source>Loaded script resolvers:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Geladene Script Resolver:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.cpp" line="163"/>
|
<location filename="src/settingsdialog.cpp" line="163"/>
|
||||||
<source>Select Music Folder</source>
|
<source>Select Music Folder</source>
|
||||||
<translation type="unfinished">Musikordner auswählen</translation>
|
<translation>Musikordner auswählen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.cpp" line="250"/>
|
<location filename="src/settingsdialog.cpp" line="250"/>
|
||||||
<location filename="src/settingsdialog.cpp" line="262"/>
|
<location filename="src/settingsdialog.cpp" line="262"/>
|
||||||
<source>Failed</source>
|
<source>Failed</source>
|
||||||
<translation type="unfinished">Fehlgeschlagen</translation>
|
<translation>Fehlgeschlagen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.cpp" line="255"/>
|
<location filename="src/settingsdialog.cpp" line="255"/>
|
||||||
<source>Success</source>
|
<source>Success</source>
|
||||||
<translation type="unfinished">Erfolgreich</translation>
|
<translation>Erfolgreich</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.cpp" line="268"/>
|
<location filename="src/settingsdialog.cpp" line="268"/>
|
||||||
<source>Could not contact server</source>
|
<source>Could not contact server</source>
|
||||||
<translation type="unfinished">Konnte den Server nicht erreichen</translation>
|
<translation>Konnte den Server nicht erreichen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/settingsdialog.cpp" line="338"/>
|
<location filename="src/settingsdialog.cpp" line="338"/>
|
||||||
<source>Load script resolver file</source>
|
<source>Load script resolver file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Script Resolver laden</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -519,17 +519,17 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="558"/>
|
<location filename="src/sourcetree/sourcetreeview.cpp" line="558"/>
|
||||||
<source>Offline</source>
|
<source>Offline</source>
|
||||||
<translation type="unfinished">Nicht Verbunden</translation>
|
<translation>Nicht Verbunden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="560"/>
|
<location filename="src/sourcetree/sourcetreeview.cpp" line="560"/>
|
||||||
<source>All available tracks</source>
|
<source>All available tracks</source>
|
||||||
<translation type="unfinished">Alle verfügbaren Stücke</translation>
|
<translation>Alle verfügbaren Stücke</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="564"/>
|
<location filename="src/sourcetree/sourcetreeview.cpp" line="564"/>
|
||||||
<source>Online</source>
|
<source>Online</source>
|
||||||
<translation type="unfinished">Verbunden</translation>
|
<translation>Verbunden</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -537,27 +537,27 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="26"/>
|
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="26"/>
|
||||||
<source>Recent Albums</source>
|
<source>Recent Albums</source>
|
||||||
<translation type="unfinished">Aktuelle Alben</translation>
|
<translation>Aktuelle Alben</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="68"/>
|
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="68"/>
|
||||||
<source>Latest Additions to their Collection</source>
|
<source>Latest Additions to their Collection</source>
|
||||||
<translation type="unfinished">Zuletzt zur Sammlung hinzugefügte Stücke</translation>
|
<translation>Zuletzt zur Sammlung hinzugefügt</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="89"/>
|
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="89"/>
|
||||||
<source>Recently played Tracks</source>
|
<source>Recently played Tracks</source>
|
||||||
<translation type="unfinished">Aktuell gespiele Stücke</translation>
|
<translation>Zuletzt gespiele Stücke</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.cpp" line="65"/>
|
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.cpp" line="65"/>
|
||||||
<source>Info about %1</source>
|
<source>Info about %1</source>
|
||||||
<translation type="unfinished">Information über %1</translation>
|
<translation>Information über %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.cpp" line="65"/>
|
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.cpp" line="65"/>
|
||||||
<source>Your Collection</source>
|
<source>Your Collection</source>
|
||||||
<translation type="unfinished">Deine Sammlung</translation>
|
<translation>Deine Sammlung</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -654,17 +654,17 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="125"/>
|
<location filename="src/sourcetree/sourcetreeview.cpp" line="125"/>
|
||||||
<source>&Load Playlist</source>
|
<source>&Load Playlist</source>
|
||||||
<translation type="unfinished">&Lade Playliste</translation>
|
<translation>&Lade Playliste</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="126"/>
|
<location filename="src/sourcetree/sourcetreeview.cpp" line="126"/>
|
||||||
<source>&Rename Playlist</source>
|
<source>&Rename Playlist</source>
|
||||||
<translation type="unfinished">Playliste &umbenennen</translation>
|
<translation>Playliste &umbenennen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="128"/>
|
<location filename="src/sourcetree/sourcetreeview.cpp" line="128"/>
|
||||||
<source>&Delete Playlist</source>
|
<source>&Delete Playlist</source>
|
||||||
<translation type="unfinished">Playliste &löschen</translation>
|
<translation>Playliste &löschen</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -698,7 +698,7 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/dynamic/widgets/DynamicSetupWidget.cpp" line="62"/>
|
<location filename="src/libtomahawk/playlist/dynamic/widgets/DynamicSetupWidget.cpp" line="62"/>
|
||||||
<source>Generate</source>
|
<source>Generate</source>
|
||||||
<translation type="unfinished">Erzeugen</translation>
|
<translation>Erzeugen</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -706,17 +706,17 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="135"/>
|
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="135"/>
|
||||||
<source>Add some filters above to seed this station!</source>
|
<source>Add some filters above to seed this station!</source>
|
||||||
<translation type="unfinished">Füge einige Filter hinzu, um diese Station zu initialisieren!</translation>
|
<translation>Füge einige Filter hinzu, um diese Station zu starten!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="140"/>
|
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="140"/>
|
||||||
<source>Press Generate to get started!</source>
|
<source>Press Generate to get started!</source>
|
||||||
<translation type="unfinished">Drücke Erzeugen, um zu beginnen!</translation>
|
<translation>Drücke Erzeugen, und los geht's!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="142"/>
|
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="142"/>
|
||||||
<source>Add some filters above, and press Generate to get started!</source>
|
<source>Add some filters above, and press Generate to get started!</source>
|
||||||
<translation type="unfinished">Füge oben einige Filter hinzu und drücke Erzeugen um zu beginnen!</translation>
|
<translation>Füge oben einige Filter hinzu und drücke Erzeugen um loszulegen!</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -1091,53 +1091,53 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="14"/>
|
<location filename="src/tomahawkwindow.ui" line="14"/>
|
||||||
<source>Tomahawk</source>
|
<source>Tomahawk</source>
|
||||||
<translation type="unfinished">Tomahawk</translation>
|
<translation>Tomahawk</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="43"/>
|
<location filename="src/tomahawkwindow.ui" line="43"/>
|
||||||
<source>&Settings</source>
|
<source>&Settings</source>
|
||||||
<translation type="unfinished">&Einstellungen</translation>
|
<translation>&Einstellungen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="49"/>
|
<location filename="src/tomahawkwindow.ui" line="49"/>
|
||||||
<source>&Music Player</source>
|
<source>&Music Player</source>
|
||||||
<translation type="unfinished">&Abspielprogramm</translation>
|
<translation>&Music Player</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="60"/>
|
<location filename="src/tomahawkwindow.ui" line="60"/>
|
||||||
<source>&Playlist</source>
|
<source>&Playlist</source>
|
||||||
<translation type="unfinished">&Playliste</translation>
|
<translation>&Playliste</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="70"/>
|
<location filename="src/tomahawkwindow.ui" line="70"/>
|
||||||
<source>&Network</source>
|
<source>&Network</source>
|
||||||
<translation type="unfinished">&Netzwerk</translation>
|
<translation>&Netzwerk</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="77"/>
|
<location filename="src/tomahawkwindow.ui" line="77"/>
|
||||||
<source>&Help</source>
|
<source>&Help</source>
|
||||||
<translation type="unfinished">&Hilfe</translation>
|
<translation>&Hilfe</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="90"/>
|
<location filename="src/tomahawkwindow.ui" line="90"/>
|
||||||
<source>&Quit</source>
|
<source>&Quit</source>
|
||||||
<translation type="unfinished">&Verlassen</translation>
|
<translation>&Verlassen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="93"/>
|
<location filename="src/tomahawkwindow.ui" line="93"/>
|
||||||
<source>Ctrl+Q</source>
|
<source>Ctrl+Q</source>
|
||||||
<translation type="unfinished">Strg+Q</translation>
|
<translation>Ctrl+Q</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="101"/>
|
<location filename="src/tomahawkwindow.ui" line="101"/>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="471"/>
|
<location filename="src/tomahawkwindow.cpp" line="471"/>
|
||||||
<source>Go &online</source>
|
<source>Go &online</source>
|
||||||
<translation type="unfinished">&Verbindung herstellen</translation>
|
<translation>&Verbindung herstellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="106"/>
|
<location filename="src/tomahawkwindow.ui" line="106"/>
|
||||||
<source>Add &Friend...</source>
|
<source>Add &Friend...</source>
|
||||||
<translation type="unfinished">Freund &hinzufügen…</translation>
|
<translation>Freund &hinzufügen…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="111"/>
|
<location filename="src/tomahawkwindow.ui" line="111"/>
|
||||||
@@ -1147,58 +1147,58 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="116"/>
|
<location filename="src/tomahawkwindow.ui" line="116"/>
|
||||||
<source>&Configure Tomahawk...</source>
|
<source>&Configure Tomahawk...</source>
|
||||||
<translation type="unfinished">Tomahawk &einrichten…</translation>
|
<translation>Tomahawk &einrichten…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="124"/>
|
<location filename="src/tomahawkwindow.ui" line="124"/>
|
||||||
<source>Load &XSPF...</source>
|
<source>Load &XSPF...</source>
|
||||||
<translation type="unfinished">&XSPF-Datei laden…</translation>
|
<translation>&XSPF laden…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="129"/>
|
<location filename="src/tomahawkwindow.ui" line="129"/>
|
||||||
<source>Create &New Playlist...</source>
|
<source>Create &New Playlist...</source>
|
||||||
<translation type="unfinished">Neue &Playliste erstellen…</translation>
|
<translation>Neue &Playliste erstellen…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="134"/>
|
<location filename="src/tomahawkwindow.ui" line="134"/>
|
||||||
<source>About &Tomahawk...</source>
|
<source>About &Tomahawk...</source>
|
||||||
<translation type="unfinished">Über &Tomahawk…</translation>
|
<translation>Über &Tomahawk…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="142"/>
|
<location filename="src/tomahawkwindow.ui" line="142"/>
|
||||||
<source>Create New &Automatic Playlist</source>
|
<source>Create New &Automatic Playlist</source>
|
||||||
<translation type="unfinished">Neue, &automatische Playliste erstellen</translation>
|
<translation>Neue &automatische Playliste erstellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="147"/>
|
<location filename="src/tomahawkwindow.ui" line="147"/>
|
||||||
<source>Create New &Station</source>
|
<source>Create New &Station</source>
|
||||||
<translation type="unfinished">Neue &Station erstellen</translation>
|
<translation>Neue &Station erstellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="152"/>
|
<location filename="src/tomahawkwindow.ui" line="152"/>
|
||||||
<source>Show Offline Sources</source>
|
<source>Show Offline Sources</source>
|
||||||
<translation type="unfinished">Nicht-Verfügbare Quellen anzeigen</translation>
|
<translation>Nicht-Verfügbare Quellen anzeigen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.ui" line="157"/>
|
<location filename="src/tomahawkwindow.ui" line="157"/>
|
||||||
<source>Hide Offline Sources</source>
|
<source>Hide Offline Sources</source>
|
||||||
<translation type="unfinished">Nicht-Verfügbare Quellen ausblenden</translation>
|
<translation>Nicht-Verfügbare Quellen ausblenden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="150"/>
|
<location filename="src/tomahawkwindow.cpp" line="150"/>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="166"/>
|
<location filename="src/tomahawkwindow.cpp" line="166"/>
|
||||||
<source>Check for updates...</source>
|
<source>Check for updates...</source>
|
||||||
<translation type="unfinished">Teste auf updates…</translation>
|
<translation type="unfinished">Suche nach Updates…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="170"/>
|
<location filename="src/tomahawkwindow.cpp" line="170"/>
|
||||||
<source>Back</source>
|
<source>Back</source>
|
||||||
<translation type="unfinished">Zurück</translation>
|
<translation>Zurück</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="171"/>
|
<location filename="src/tomahawkwindow.cpp" line="171"/>
|
||||||
<source>Forward</source>
|
<source>Forward</source>
|
||||||
<translation type="unfinished">Forwärts</translation>
|
<translation>Vorwärts</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="172"/>
|
<location filename="src/tomahawkwindow.cpp" line="172"/>
|
||||||
@@ -1210,37 +1210,37 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
|||||||
<location filename="src/tomahawkwindow.cpp" line="339"/>
|
<location filename="src/tomahawkwindow.cpp" line="339"/>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="347"/>
|
<location filename="src/tomahawkwindow.cpp" line="347"/>
|
||||||
<source>Connect To Peer</source>
|
<source>Connect To Peer</source>
|
||||||
<translation type="unfinished">Zu Gegenstelle verbinden</translation>
|
<translation>Zu Gegenstelle verbinden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="333"/>
|
<location filename="src/tomahawkwindow.cpp" line="333"/>
|
||||||
<source>Enter peer address:</source>
|
<source>Enter peer address:</source>
|
||||||
<translation type="unfinished">Gib die Adresse der Gegenstelle ein:</translation>
|
<translation>Gib die Adresse der Gegenstelle ein:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="340"/>
|
<location filename="src/tomahawkwindow.cpp" line="340"/>
|
||||||
<source>Enter peer port:</source>
|
<source>Enter peer port:</source>
|
||||||
<translation type="unfinished">Gib den Port der Gegenstelle ein:</translation>
|
<translation>Gib den Port der Gegenstelle ein:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="348"/>
|
<location filename="src/tomahawkwindow.cpp" line="348"/>
|
||||||
<source>Enter peer key:</source>
|
<source>Enter peer key:</source>
|
||||||
<translation type="unfinished">Gib den Schlüssel der Gegenstelle ein:</translation>
|
<translation>Gib den Schlüssel der Gegenstelle ein:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="464"/>
|
<location filename="src/tomahawkwindow.cpp" line="464"/>
|
||||||
<source>Go &offline</source>
|
<source>Go &offline</source>
|
||||||
<translation type="unfinished">Verbindung &trennen</translation>
|
<translation>Verbindung &trennen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="481"/>
|
<location filename="src/tomahawkwindow.cpp" line="481"/>
|
||||||
<source>Authentication Error</source>
|
<source>Authentication Error</source>
|
||||||
<translation type="unfinished">Authentifizierungsfehler</translation>
|
<translation>Authentifizierungsfehler</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="496"/>
|
<location filename="src/tomahawkwindow.cpp" line="496"/>
|
||||||
<source>by</source>
|
<source>by</source>
|
||||||
<translation type="unfinished">von</translation>
|
<translation>von</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/tomahawkwindow.cpp" line="506"/>
|
<location filename="src/tomahawkwindow.cpp" line="506"/>
|
||||||
@@ -1357,17 +1357,17 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/transferview.cpp" line="46"/>
|
<location filename="src/transferview.cpp" line="46"/>
|
||||||
<source>Peer</source>
|
<source>Peer</source>
|
||||||
<translation type="unfinished">Gegenstelle</translation>
|
<translation>Gegenstelle</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/transferview.cpp" line="46"/>
|
<location filename="src/transferview.cpp" line="46"/>
|
||||||
<source>Rate</source>
|
<source>Rate</source>
|
||||||
<translation type="unfinished">Rate</translation>
|
<translation>Rate</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/transferview.cpp" line="46"/>
|
<location filename="src/transferview.cpp" line="46"/>
|
||||||
<source>Track</source>
|
<source>Track</source>
|
||||||
<translation type="unfinished">Stück</translation>
|
<translation>Stück</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -1435,22 +1435,22 @@ If connections to peers seem to have been lost, just press the appropriate butto
|
|||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/welcomewidget.ui" line="22"/>
|
<location filename="src/libtomahawk/widgets/welcomewidget.ui" line="22"/>
|
||||||
<source>Recently played playlists:</source>
|
<source>Recently played playlists:</source>
|
||||||
<translation type="unfinished">Aktuell gespielte Playlisten:</translation>
|
<translation>Zuletzt gespielte Playlisten:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/welcomewidget.ui" line="37"/>
|
<location filename="src/libtomahawk/widgets/welcomewidget.ui" line="37"/>
|
||||||
<source>Recently played tracks:</source>
|
<source>Recently played tracks:</source>
|
||||||
<translation type="unfinished">Aktuell gespielte Stücke:</translation>
|
<translation>Zuletzt gespielte Stücke:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/welcomewidget.cpp" line="81"/>
|
<location filename="src/libtomahawk/widgets/welcomewidget.cpp" line="81"/>
|
||||||
<source>You have not played any playlists yet.</source>
|
<source>You have not played any playlists yet.</source>
|
||||||
<translation type="unfinished">Du hast bisher keine Playlisten abgespielt.</translation>
|
<translation>Du hast bisher keine Playlisten abgespielt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="src/libtomahawk/widgets/welcomewidget.h" line="106"/>
|
<location filename="src/libtomahawk/widgets/welcomewidget.h" line="106"/>
|
||||||
<source>Welcome to Tomahawk</source>
|
<source>Welcome to Tomahawk</source>
|
||||||
<translation type="unfinished">Willkommen bei Tomahawk</translation>
|
<translation>Willkommen bei Tomahawk</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
212
resources.qrc
@@ -1,106 +1,110 @@
|
|||||||
<RCC>
|
<RCC>
|
||||||
<qresource>
|
<qresource prefix="/">
|
||||||
<file>./data/images/add-friend-button-pressed.png</file>
|
<file>data/images/avatar-dude-plus.png</file>
|
||||||
<file>./data/images/add-friend-button-rest.png</file>
|
<file>data/images/avatar-dude.png</file>
|
||||||
<file>./data/images/avatar-dude-plus.png</file>
|
<file>data/images/back-pressed.png</file>
|
||||||
<file>./data/images/avatar-dude.png</file>
|
<file>data/images/back-rest.png</file>
|
||||||
<file>./data/images/back-pressed.png</file>
|
<file>data/images/cover-shadow.png</file>
|
||||||
<file>./data/images/back-rest.png</file>
|
<file>data/images/filter.png</file>
|
||||||
<file>./data/images/cover-shadow.png</file>
|
<file>data/images/loved.png</file>
|
||||||
<file>./data/images/magnifying-glass.png</file>
|
<file>data/images/not-loved.png</file>
|
||||||
<file>./data/images/no-album-art-placeholder.png</file>
|
<file>data/images/no-album-art-placeholder.png</file>
|
||||||
<file>./data/images/now-playing-panel.png</file>
|
<file>data/images/no-artist-image-placeholder.png</file>
|
||||||
<file>./data/images/now-playing-speaker.png</file>
|
<file>data/images/track-placeholder.png</file>
|
||||||
<file>./data/images/pause-pressed.png</file>
|
<file>data/images/now-playing-panel.png</file>
|
||||||
<file>./data/images/pause-rest.png</file>
|
<file>data/images/now-playing-speaker.png</file>
|
||||||
<file>./data/images/play-pressed.png</file>
|
<file>data/images/pause-pressed.png</file>
|
||||||
<file>./data/images/play-rest.png</file>
|
<file>data/images/pause-rest.png</file>
|
||||||
<file>./data/images/sipplugin-add.png</file>
|
<file>data/images/play-pressed.png</file>
|
||||||
<file>./data/images/sipplugin-remove.png</file>
|
<file>data/images/play-rest.png</file>
|
||||||
<file>./data/images/playlist-icon.png</file>
|
<file>data/images/sipplugin-add.png</file>
|
||||||
<file>./data/images/repeat-1-on-pressed.png</file>
|
<file>data/images/sipplugin-remove.png</file>
|
||||||
<file>./data/images/repeat-1-on-rest.png</file>
|
<file>data/images/playlist-icon.png</file>
|
||||||
<file>./data/images/repeat-all-on-pressed.png</file>
|
<file>data/images/repeat-1-on-pressed.png</file>
|
||||||
<file>./data/images/repeat-all-on-rest.png</file>
|
<file>data/images/repeat-1-on-rest.png</file>
|
||||||
<file>./data/images/repeat-off-pressed.png</file>
|
<file>data/images/repeat-all-on-pressed.png</file>
|
||||||
<file>./data/images/repeat-off-rest.png</file>
|
<file>data/images/repeat-all-on-rest.png</file>
|
||||||
<file>./data/images/search-box-dismiss-x.png</file>
|
<file>data/images/repeat-off-pressed.png</file>
|
||||||
<file>./data/images/search-box.png</file>
|
<file>data/images/repeat-off-rest.png</file>
|
||||||
<file>./data/images/seek-and-volume-knob-pressed.png</file>
|
<file>data/images/search-box-dismiss-x.png</file>
|
||||||
<file>./data/images/seek-and-volume-knob-rest.png</file>
|
<file>data/images/seek-and-volume-knob-pressed.png</file>
|
||||||
<file>./data/images/seek-slider-bkg.png</file>
|
<file>data/images/seek-and-volume-knob-rest.png</file>
|
||||||
<file>./data/images/seek-slider-level.png</file>
|
<file>data/images/seek-slider-bkg.png</file>
|
||||||
<file>./data/images/shuffle-off-pressed.png</file>
|
<file>data/images/seek-slider-level.png</file>
|
||||||
<file>./data/images/shuffle-off-rest.png</file>
|
<file>data/images/shuffle-off-pressed.png</file>
|
||||||
<file>./data/images/shuffle-on-pressed.png</file>
|
<file>data/images/shuffle-off-rest.png</file>
|
||||||
<file>./data/images/shuffle-on-rest.png</file>
|
<file>data/images/shuffle-on-pressed.png</file>
|
||||||
<file>./data/images/skip-pressed.png</file>
|
<file>data/images/shuffle-on-rest.png</file>
|
||||||
<file>./data/images/skip-rest.png</file>
|
<file>data/images/skip-pressed.png</file>
|
||||||
<file>./data/images/source-info.png</file>
|
<file>data/images/skip-rest.png</file>
|
||||||
<file>./data/images/source-off-pressed.png</file>
|
<file>data/images/user-avatar.png</file>
|
||||||
<file>./data/images/source-off-rest.png</file>
|
<file>data/images/view-toggle-active-centre.png</file>
|
||||||
<file>./data/images/source-on-pressed.png</file>
|
<file>data/images/view-toggle-active-left.png</file>
|
||||||
<file>./data/images/source-on-rest.png</file>
|
<file>data/images/view-toggle-active-right.png</file>
|
||||||
<file>./data/images/status-alert-icon.png</file>
|
<file>data/images/view-toggle-icon-artist-active.png</file>
|
||||||
<file>./data/images/status-bar-bkg.png</file>
|
<file>data/images/view-toggle-icon-artist-inactive.png</file>
|
||||||
<file>./data/images/status-dismiss-x.png</file>
|
<file>data/images/view-toggle-icon-cloud-active.png</file>
|
||||||
<file>./data/images/user-avatar.png</file>
|
<file>data/images/view-toggle-icon-cloud-inactive.png</file>
|
||||||
<file>./data/images/view-toggle-active-centre.png</file>
|
<file>data/images/view-toggle-icon-list-active.png</file>
|
||||||
<file>./data/images/view-toggle-active-left.png</file>
|
<file>data/images/view-toggle-icon-list-inactive.png</file>
|
||||||
<file>./data/images/view-toggle-active-right.png</file>
|
<file>data/images/view-toggle-inactive-centre.png</file>
|
||||||
<file>./data/images/view-toggle-icon-artist-active.png</file>
|
<file>data/images/view-toggle-inactive-left.png</file>
|
||||||
<file>./data/images/view-toggle-icon-artist-inactive.png</file>
|
<file>data/images/view-toggle-inactive-right.png</file>
|
||||||
<file>./data/images/view-toggle-icon-cloud-active.png</file>
|
<file>data/images/view-toggle-pressed-centre.png</file>
|
||||||
<file>./data/images/view-toggle-icon-cloud-inactive.png</file>
|
<file>data/images/view-toggle-pressed-left.png</file>
|
||||||
<file>./data/images/view-toggle-icon-list-active.png</file>
|
<file>data/images/view-toggle-pressed-right.png</file>
|
||||||
<file>./data/images/view-toggle-icon-list-inactive.png</file>
|
<file>data/images/list-add.png</file>
|
||||||
<file>./data/images/view-toggle-inactive-centre.png</file>
|
<file>data/images/list-remove.png</file>
|
||||||
<file>./data/images/view-toggle-inactive-left.png</file>
|
<file>data/images/arrow-up-double.png</file>
|
||||||
<file>./data/images/view-toggle-inactive-right.png</file>
|
<file>data/images/arrow-down-double.png</file>
|
||||||
<file>./data/images/view-toggle-pressed-centre.png</file>
|
<file>data/images/volume-icon-full.png</file>
|
||||||
<file>./data/images/view-toggle-pressed-left.png</file>
|
<file>data/images/arrow-right-double.png</file>
|
||||||
<file>./data/images/view-toggle-pressed-right.png</file>
|
<file>data/images/view-refresh.png</file>
|
||||||
<file>./data/images/list-add.png</file>
|
<file>data/images/volume-icon-muted.png</file>
|
||||||
<file>./data/images/list-remove.png</file>
|
<file>data/images/volume-slider-bkg.png</file>
|
||||||
<file>./data/images/arrow-up-double.png</file>
|
<file>data/images/volume-slider-level.png</file>
|
||||||
<file>./data/images/arrow-down-double.png</file>
|
<file>data/images/echonest_logo.png</file>
|
||||||
<file>./data/images/volume-icon-full.png</file>
|
<file>data/images/loading-animation.gif</file>
|
||||||
<file>./data/images/arrow-right-double.png</file>
|
<file>data/images/info.png</file>
|
||||||
<file>./data/images/view-refresh.png</file>
|
<file>data/images/home.png</file>
|
||||||
<file>./data/images/volume-icon-muted.png</file>
|
<file>data/images/back.png</file>
|
||||||
<file>./data/images/volume-slider-bkg.png</file>
|
<file>data/images/forward.png</file>
|
||||||
<file>./data/images/volume-slider-level.png</file>
|
<file>data/images/music-icon.png</file>
|
||||||
<file>./data/images/echonest_logo.png</file>
|
<file>data/images/configure.png</file>
|
||||||
<file>./data/images/loading-animation.gif</file>
|
<file>data/images/create-playlist.png</file>
|
||||||
<file>./data/images/home.png</file>
|
<file>data/images/add.png</file>
|
||||||
<file>./data/images/back.png</file>
|
<file>data/images/recently-played.png</file>
|
||||||
<file>./data/images/forward.png</file>
|
<file>data/images/supercollection.png</file>
|
||||||
<file>./data/images/music-icon.png</file>
|
<file>data/images/sipplugin-online.png</file>
|
||||||
<file>./data/images/configure.png</file>
|
<file>data/images/sipplugin-offline.png</file>
|
||||||
<file>./data/images/create-playlist.png</file>
|
<file>data/images/advanced-settings.png</file>
|
||||||
<file>./data/images/add.png</file>
|
<file>data/images/account-settings.png</file>
|
||||||
<file>./data/images/recently-played.png</file>
|
<file>data/images/music-settings.png</file>
|
||||||
<file>./data/images/supercollection.png</file>
|
<file>data/images/resolvers-settings.png</file>
|
||||||
<file>./data/images/sipplugin-online.png</file>
|
<file>data/images/lastfm-settings.png</file>
|
||||||
<file>./data/images/sipplugin-offline.png</file>
|
<file>data/images/automatic-playlist.png</file>
|
||||||
<file>./data/images/advanced-settings.png</file>
|
<file>data/images/station.png</file>
|
||||||
<file>./data/images/account-settings.png</file>
|
<file>data/images/new-additions.png</file>
|
||||||
<file>./data/images/music-settings.png</file>
|
<file>data/images/loved_playlist.png</file>
|
||||||
<file>./data/images/resolvers-settings.png</file>
|
<file>data/images/dashboard.png</file>
|
||||||
<file>./data/images/lastfm-settings.png</file>
|
<file>data/stylesheets/topbar-radiobuttons.css</file>
|
||||||
<file>./data/stylesheets/topbar-radiobuttons.css</file>
|
<file>data/icons/tomahawk-icon-16x16.png</file>
|
||||||
<file>./data/icons/tomahawk-icon-16x16.png</file>
|
<file>data/icons/tomahawk-icon-32x32.png</file>
|
||||||
<file>./data/icons/tomahawk-icon-32x32.png</file>
|
<file>data/icons/tomahawk-icon-64x64.png</file>
|
||||||
<file>./data/icons/tomahawk-icon-64x64.png</file>
|
<file>data/icons/tomahawk-icon-128x128.png</file>
|
||||||
<file>./data/icons/tomahawk-icon-128x128.png</file>
|
<file>data/icons/tomahawk-icon-256x256.png</file>
|
||||||
<file>./data/icons/tomahawk-icon-256x256.png</file>
|
<file>data/icons/tomahawk-icon-512x512.png</file>
|
||||||
<file>./data/icons/tomahawk-icon-512x512.png</file>
|
<file>data/icons/audio-x-generic-22x22.png</file>
|
||||||
<file>./data/icons/audio-x-generic-22x22.png</file>
|
<file>data/icons/audio-x-generic-32x32.png</file>
|
||||||
<file>./data/icons/audio-x-generic-32x32.png</file>
|
<file>data/icons/audio-x-generic-16x16.png</file>
|
||||||
<file>./data/icons/audio-x-generic-16x16.png</file>
|
<file>data/www/auth.html</file>
|
||||||
<file>./data/www/auth.html</file>
|
<file>data/www/auth.na.html</file>
|
||||||
<file>./data/www/auth.na.html</file>
|
<file>data/www/tomahawk_banner_small.png</file>
|
||||||
<file>./data/www/tomahawk_banner_small.png</file>
|
<file>data/sql/dbmigrate-22_to_23.sql</file>
|
||||||
<file>./data/sql/dbmigrate-22_to_23.sql</file>
|
<file>data/sql/dbmigrate-23_to_24.sql</file>
|
||||||
</qresource>
|
<file>data/sql/dbmigrate-24_to_25.sql</file>
|
||||||
|
<file>data/sql/dbmigrate-25_to_26.sql</file>
|
||||||
|
<file>data/js/tomahawk.js</file>
|
||||||
|
<file>data/images/avatar_frame.png</file>
|
||||||
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
@@ -41,12 +41,17 @@ if (APPLE)
|
|||||||
edited_plist # save in this variable
|
edited_plist # save in this variable
|
||||||
"${plist}" # from the contents of this var
|
"${plist}" # from the contents of this var
|
||||||
)
|
)
|
||||||
IF( NOT CMAKE_BUILD_TYPE STREQUAL "Release" )
|
# Disable non-release sparkle for now. We haven't used it yet.
|
||||||
STRING( REPLACE "http://download.tomahawk-player.org/sparkle" # match this
|
# IF( NOT CMAKE_BUILD_TYPE STREQUAL "Release" )
|
||||||
"http://download.tomahawk-player.org/sparkle-debug" #replace with debug url
|
# STRING( REPLACE "http://download.tomahawk-player.org/sparkle" # match this
|
||||||
edited_plist # save in this variable
|
# "http://download.tomahawk-player.org/sparkle-debug" #replace with debug url
|
||||||
"${edited_plist}" # from the contents of this var
|
# edited_plist # save in this variable
|
||||||
)
|
# "${edited_plist}" # from the contents of this var
|
||||||
ENDIF()
|
# )
|
||||||
|
# ENDIF()
|
||||||
FILE( WRITE ${CMAKE_BINARY_DIR}/Info.plist "${edited_plist}" )
|
FILE( WRITE ${CMAKE_BINARY_DIR}/Info.plist "${edited_plist}" )
|
||||||
|
|
||||||
|
FILE(COPY ${CMAKE_SOURCE_DIR}/admin/mac/sparkle_pub.pem
|
||||||
|
DESTINATION "${CMAKE_BINARY_DIR}/tomahawk.app/Contents/Resources")
|
||||||
|
|
||||||
endif (APPLE)
|
endif (APPLE)
|
||||||
|
@@ -4,13 +4,17 @@ CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
|
|||||||
IF( "${gui}" STREQUAL "no" )
|
IF( "${gui}" STREQUAL "no" )
|
||||||
SET( QT_DONT_USE_QTGUI TRUE )
|
SET( QT_DONT_USE_QTGUI TRUE )
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
IF( UNIX AND NOT APPLE )
|
||||||
|
SET( QT_USE_QTDBUS TRUE )
|
||||||
|
ENDIF( UNIX AND NOT APPLE )
|
||||||
SET( QT_USE_QTSQL TRUE )
|
SET( QT_USE_QTSQL TRUE )
|
||||||
SET( QT_USE_QTNETWORK TRUE )
|
SET( QT_USE_QTNETWORK TRUE )
|
||||||
SET( QT_USE_QTXML TRUE )
|
SET( QT_USE_QTXML TRUE )
|
||||||
SET( QT_USE_QTWEBKIT TRUE )
|
SET( QT_USE_QTWEBKIT TRUE )
|
||||||
|
|
||||||
INCLUDE( ${QT_USE_FILE} )
|
INCLUDE( ${QT_USE_FILE} )
|
||||||
INCLUDE( ${CMAKE_MODULE_PATH}/AddAppIconMacro.cmake )
|
INCLUDE( AddAppIconMacro )
|
||||||
|
|
||||||
#SET( CMAKE_BUILD_TYPE "Release" )
|
#SET( CMAKE_BUILD_TYPE "Release" )
|
||||||
SET( CMAKE_VERBOSE_MAKEFILE ON )
|
SET( CMAKE_VERBOSE_MAKEFILE ON )
|
||||||
@@ -68,6 +72,7 @@ SET( tomahawkSourcesGui ${tomahawkSourcesGui}
|
|||||||
configdelegatebase.cpp
|
configdelegatebase.cpp
|
||||||
sipconfigdelegate.cpp
|
sipconfigdelegate.cpp
|
||||||
resolverconfigdelegate.cpp
|
resolverconfigdelegate.cpp
|
||||||
|
settingslistdelegate.cpp
|
||||||
resolversmodel.cpp
|
resolversmodel.cpp
|
||||||
tomahawkwindow.cpp
|
tomahawkwindow.cpp
|
||||||
)
|
)
|
||||||
@@ -111,6 +116,7 @@ SET( tomahawkHeadersGui ${tomahawkHeadersGui}
|
|||||||
configdelegatebase.h
|
configdelegatebase.h
|
||||||
resolverconfigdelegate.h
|
resolverconfigdelegate.h
|
||||||
sipconfigdelegate.h
|
sipconfigdelegate.h
|
||||||
|
settingslistdelegate.h
|
||||||
resolversmodel.h
|
resolversmodel.h
|
||||||
delegateconfigwrapper.h
|
delegateconfigwrapper.h
|
||||||
tomahawkwindow.h
|
tomahawkwindow.h
|
||||||
@@ -118,10 +124,10 @@ SET( tomahawkHeadersGui ${tomahawkHeadersGui}
|
|||||||
|
|
||||||
SET( tomahawkUI ${tomahawkUI}
|
SET( tomahawkUI ${tomahawkUI}
|
||||||
tomahawkwindow.ui
|
tomahawkwindow.ui
|
||||||
settingsdialog.ui
|
|
||||||
diagnosticsdialog.ui
|
diagnosticsdialog.ui
|
||||||
stackedsettingsdialog.ui
|
stackedsettingsdialog.ui
|
||||||
proxydialog.ui
|
proxydialog.ui
|
||||||
|
searchbox.ui
|
||||||
|
|
||||||
audiocontrols.ui
|
audiocontrols.ui
|
||||||
)
|
)
|
||||||
@@ -260,4 +266,5 @@ IF( UNIX AND NOT APPLE AND KDE4_INSTALLED ) #install protocol file
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
INSTALL( FILES ${CMAKE_BINARY_DIR}/tomahawk.protocol DESTINATION ${PROTOCOL_INSTALL_DIR} )
|
INSTALL( FILES ${CMAKE_BINARY_DIR}/tomahawk.protocol DESTINATION ${PROTOCOL_INSTALL_DIR} )
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
#INCLUDE( "CPack.txt" )
|
#INCLUDE( "CPack.txt" )
|
||||||
|
@@ -1,70 +0,0 @@
|
|||||||
# cd build ; cmake -DCPACK_GENERATOR=DEB .. ; make package
|
|
||||||
|
|
||||||
INCLUDE(InstallRequiredSystemLibraries)
|
|
||||||
|
|
||||||
set(CPACK_PACKAGING_INSTALL_PREFIX /usr/local)
|
|
||||||
|
|
||||||
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Tomahawk desktop player")
|
|
||||||
SET(CPACK_PACKAGE_NAME "tomahawk")
|
|
||||||
SET(CPACK_PACKAGE_VENDOR "tomahawk.org")
|
|
||||||
SET(CPACK_PACKAGE_CONTACT "Richard Jones")
|
|
||||||
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "rj@tomahawk.org")
|
|
||||||
|
|
||||||
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../README")
|
|
||||||
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/../LICENSE.txt")
|
|
||||||
SET(CPACK_PACKAGE_VERSION_MAJOR "0")
|
|
||||||
SET(CPACK_PACKAGE_VERSION_MINOR "0")
|
|
||||||
SET(CPACK_PACKAGE_VERSION_PATCH "1")
|
|
||||||
SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
|
|
||||||
|
|
||||||
#SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386") # Default: Output of dpkg --print-architecture or i386
|
|
||||||
# Copied from generator script, needs to be set for inclusion into filename of package:
|
|
||||||
# $ dpkg --print-architecture
|
|
||||||
FIND_PROGRAM(DPKG_CMD dpkg)
|
|
||||||
IF(NOT DPKG_CMD)
|
|
||||||
MESSAGE(STATUS "Can not find dpkg in your path, default to i386.")
|
|
||||||
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
|
|
||||||
ELSE(NOT DPKG_CMD)
|
|
||||||
EXECUTE_PROCESS(COMMAND "${DPKG_CMD}" --print-architecture
|
|
||||||
OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
)
|
|
||||||
ENDIF(NOT DPKG_CMD)
|
|
||||||
|
|
||||||
EXECUTE_PROCESS(COMMAND "date" "+%s"
|
|
||||||
OUTPUT_VARIABLE TIMEMARK
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
)
|
|
||||||
|
|
||||||
# eg: tomahawk-i386-1.0.0
|
|
||||||
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}-${CPACK_PACKAGE_VERSION}_${TIMEMARK}")
|
|
||||||
|
|
||||||
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
|
|
||||||
|
|
||||||
IF(WIN32 AND NOT UNIX)
|
|
||||||
###
|
|
||||||
ELSE(WIN32 AND NOT UNIX)
|
|
||||||
# SET(CPACK_STRIP_FILES "tomahawk")
|
|
||||||
# SET(CPACK_SOURCE_STRIP_FILES "")
|
|
||||||
ENDIF(WIN32 AND NOT UNIX)
|
|
||||||
|
|
||||||
# Nsis only? SET(CPACK_PACKAGE_EXECUTABLES "tomahawk" "tomahawk")
|
|
||||||
|
|
||||||
#gnutls is in here because gloox needs it, and we link statically to gloox:
|
|
||||||
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libqtgui4 (>=4:4.7.0-0ubuntu1), libtag1c2a (>=1.6.2-0ubuntu1), liblastfm-dev (>=0.4.0~really0.3.3-0ubuntu1), libqt4-sql-sqlite (>=4:4.7.0-0ubuntu1), libvorbis0a (>=1.2.3-3ubuntu1), libmad0 (>=0.15.1b-4ubuntu1), libasound2 (>=1.0.22-0ubuntu7), zlib1g (>=1:1.2.3.3.dfsg-15ubuntu1), libqjson-dev (>=0.7.1-1), libgnutls26 (>= 2.7.14-0), libgloox8 (>=1.0-1)")
|
|
||||||
|
|
||||||
#SET(CPACK_DEBIAN_PACKAGE_SECTION "music")
|
|
||||||
|
|
||||||
INSTALL(
|
|
||||||
TARGETS tomahawk DESTINATION bin
|
|
||||||
RUNTIME DESTINATION bin
|
|
||||||
# LIBRARY DESTINATION lib${LIB_SUFFIX}
|
|
||||||
# ARCHIVE DESTINATION lib${LIB_SUFFIX}
|
|
||||||
)
|
|
||||||
|
|
||||||
INSTALL(
|
|
||||||
PROGRAMS ${CMAKE_BINARY_DIR}/tomahawk
|
|
||||||
DESTINATION bin
|
|
||||||
)
|
|
||||||
|
|
||||||
INCLUDE(CPack)
|
|
@@ -23,6 +23,8 @@
|
|||||||
|
|
||||||
#include "libtomahawk/pipeline.h"
|
#include "libtomahawk/pipeline.h"
|
||||||
|
|
||||||
|
#include "utils/logger.h"
|
||||||
|
|
||||||
using namespace Tomahawk;
|
using namespace Tomahawk;
|
||||||
|
|
||||||
|
|
||||||
@@ -41,6 +43,7 @@ PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
|
|||||||
headers << tr( "Searching For" ) << tr( "Pending" );
|
headers << tr( "Searching For" ) << tr( "Pending" );
|
||||||
m_tree->setHeaderLabels( headers );
|
m_tree->setHeaderLabels( headers );
|
||||||
|
|
||||||
|
m_tree->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
|
||||||
m_tree->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Ignored );
|
m_tree->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Ignored );
|
||||||
m_tree->setColumnCount( 2 );
|
m_tree->setColumnCount( 2 );
|
||||||
m_tree->setColumnWidth( 0, 200 );
|
m_tree->setColumnWidth( 0, 200 );
|
||||||
@@ -57,6 +60,17 @@ PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
|
|||||||
connect( Pipeline::instance(), SIGNAL( resolving( Tomahawk::query_ptr ) ), SLOT( onPipelineUpdate( Tomahawk::query_ptr ) ) );
|
connect( Pipeline::instance(), SIGNAL( resolving( Tomahawk::query_ptr ) ), SLOT( onPipelineUpdate( Tomahawk::query_ptr ) ) );
|
||||||
connect( Pipeline::instance(), SIGNAL( idle() ), SLOT( onPipelineUpdate() ) );
|
connect( Pipeline::instance(), SIGNAL( idle() ), SLOT( onPipelineUpdate() ) );
|
||||||
|
|
||||||
|
#ifndef Q_WS_WIN
|
||||||
|
QFont f = font();
|
||||||
|
f.setPointSize( f.pointSize() - 1 );
|
||||||
|
setFont( f );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Q_WS_MAC
|
||||||
|
f.setPointSize( f.pointSize() - 2 );
|
||||||
|
setFont( f );
|
||||||
|
#endif
|
||||||
|
|
||||||
onPipelineUpdate();
|
onPipelineUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,8 +78,6 @@ PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
|
|||||||
void
|
void
|
||||||
PipelineStatusView::onPipelineUpdate( const query_ptr& query )
|
PipelineStatusView::onPipelineUpdate( const query_ptr& query )
|
||||||
{
|
{
|
||||||
qDebug() << Q_FUNC_INFO;
|
|
||||||
|
|
||||||
QTreeWidgetItem* ti = m_tree->invisibleRootItem()->child( 0 );
|
QTreeWidgetItem* ti = m_tree->invisibleRootItem()->child( 0 );
|
||||||
|
|
||||||
if ( Pipeline::instance()->activeQueryCount() && !query.isNull() )
|
if ( Pipeline::instance()->activeQueryCount() && !query.isNull() )
|
||||||
|
@@ -19,7 +19,6 @@
|
|||||||
#ifndef PIPELINESTATUSVIEW_H
|
#ifndef PIPELINESTATUSVIEW_H
|
||||||
#define PIPELINESTATUSVIEW_H
|
#define PIPELINESTATUSVIEW_H
|
||||||
|
|
||||||
#include <QDebug>
|
|
||||||
#include <QTreeWidget>
|
#include <QTreeWidget>
|
||||||
|
|
||||||
#include "typedefs.h"
|
#include "typedefs.h"
|
||||||
@@ -35,7 +34,6 @@ public:
|
|||||||
explicit PipelineStatusView( AnimatedSplitter* parent );
|
explicit PipelineStatusView( AnimatedSplitter* parent );
|
||||||
virtual ~PipelineStatusView()
|
virtual ~PipelineStatusView()
|
||||||
{
|
{
|
||||||
qDebug() << Q_FUNC_INFO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QSize sizeHint() const;
|
QSize sizeHint() const;
|
||||||
|
@@ -20,14 +20,24 @@
|
|||||||
#include "ui_audiocontrols.h"
|
#include "ui_audiocontrols.h"
|
||||||
|
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
|
#include <QDropEvent>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
|
||||||
#include "audio/audioengine.h"
|
#include "audio/audioengine.h"
|
||||||
#include "viewmanager.h"
|
#include "viewmanager.h"
|
||||||
#include "utils/imagebutton.h"
|
#include "playlist/playlistview.h"
|
||||||
#include "utils/tomahawkutils.h"
|
#include "database/database.h"
|
||||||
|
#include "database/databasecommand_socialaction.h"
|
||||||
|
|
||||||
#include "album.h"
|
#include "album.h"
|
||||||
|
|
||||||
|
#include "utils/imagebutton.h"
|
||||||
|
#include "utils/tomahawkutils.h"
|
||||||
|
#include "utils/logger.h"
|
||||||
|
#include <globalactionmanager.h>
|
||||||
|
|
||||||
|
using namespace Tomahawk;
|
||||||
|
|
||||||
static QString s_acInfoIdentifier = QString( "AUDIOCONTROLS" );
|
static QString s_acInfoIdentifier = QString( "AUDIOCONTROLS" );
|
||||||
|
|
||||||
|
|
||||||
@@ -38,14 +48,13 @@ AudioControls::AudioControls( QWidget* parent )
|
|||||||
, m_shuffled( false )
|
, m_shuffled( false )
|
||||||
{
|
{
|
||||||
ui->setupUi( this );
|
ui->setupUi( this );
|
||||||
|
setAcceptDrops( true );
|
||||||
ui->buttonAreaLayout->setSpacing( 2 );
|
|
||||||
|
|
||||||
QFont font( ui->artistTrackLabel->font() );
|
QFont font( ui->artistTrackLabel->font() );
|
||||||
font.setPixelSize( 12 );
|
font.setPixelSize( 12 );
|
||||||
|
|
||||||
#ifdef Q_WS_MAC
|
#ifdef Q_WS_MAC
|
||||||
font.setPointSize( font.pointSize() - 2 );
|
font.setPixelSize( font.pixelSize() - 2 );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ui->artistTrackLabel->setFont( font );
|
ui->artistTrackLabel->setFont( font );
|
||||||
@@ -75,6 +84,8 @@ AudioControls::AudioControls( QWidget* parent )
|
|||||||
ui->repeatButton->setPixmap( RESPATH "images/repeat-off-pressed.png", QIcon::Off, QIcon::Active );
|
ui->repeatButton->setPixmap( RESPATH "images/repeat-off-pressed.png", QIcon::Off, QIcon::Active );
|
||||||
ui->volumeLowButton->setPixmap( RESPATH "images/volume-icon-muted.png" );
|
ui->volumeLowButton->setPixmap( RESPATH "images/volume-icon-muted.png" );
|
||||||
ui->volumeHighButton->setPixmap( RESPATH "images/volume-icon-full.png" );
|
ui->volumeHighButton->setPixmap( RESPATH "images/volume-icon-full.png" );
|
||||||
|
ui->loveButton->setPixmap( RESPATH "images/not-loved.png" );
|
||||||
|
ui->loveButton->setCheckable( true );
|
||||||
|
|
||||||
ui->ownerLabel->setForegroundRole( QPalette::Dark );
|
ui->ownerLabel->setForegroundRole( QPalette::Dark );
|
||||||
ui->metaDataArea->setStyleSheet( "QWidget#metaDataArea {\nborder-width: 4px;\nborder-image: url(" RESPATH "images/now-playing-panel.png) 4 4 4 4 stretch stretch; }" );
|
ui->metaDataArea->setStyleSheet( "QWidget#metaDataArea {\nborder-width: 4px;\nborder-image: url(" RESPATH "images/now-playing-panel.png) 4 4 4 4 stretch stretch; }" );
|
||||||
@@ -93,6 +104,7 @@ AudioControls::AudioControls( QWidget* parent )
|
|||||||
|
|
||||||
"QSlider::handle::horizontal {"
|
"QSlider::handle::horizontal {"
|
||||||
"margin-bottom: -7px; margin-top: -7px;"
|
"margin-bottom: -7px; margin-top: -7px;"
|
||||||
|
"margin-left: -4px; margin-right: -4px;"
|
||||||
"height: 17px; width: 16px;"
|
"height: 17px; width: 16px;"
|
||||||
"background-image: url(" RESPATH "images/seek-and-volume-knob-rest.png);"
|
"background-image: url(" RESPATH "images/seek-and-volume-knob-rest.png);"
|
||||||
"background-repeat: no-repeat;"
|
"background-repeat: no-repeat;"
|
||||||
@@ -113,6 +125,7 @@ AudioControls::AudioControls( QWidget* parent )
|
|||||||
|
|
||||||
"QSlider::handle::horizontal {"
|
"QSlider::handle::horizontal {"
|
||||||
"margin-bottom: -7px; margin-top: -7px;"
|
"margin-bottom: -7px; margin-top: -7px;"
|
||||||
|
"margin-left: -4px; margin-right: -4px;"
|
||||||
"height: 17px; width: 16px;"
|
"height: 17px; width: 16px;"
|
||||||
"background-image: url(" RESPATH "images/seek-and-volume-knob-rest.png);"
|
"background-image: url(" RESPATH "images/seek-and-volume-knob-rest.png);"
|
||||||
"background-repeat: no-repeat;"
|
"background-repeat: no-repeat;"
|
||||||
@@ -137,7 +150,6 @@ AudioControls::AudioControls( QWidget* parent )
|
|||||||
connect( ui->volumeLowButton, SIGNAL( clicked() ), AudioEngine::instance(), SLOT( lowerVolume() ) );
|
connect( ui->volumeLowButton, SIGNAL( clicked() ), AudioEngine::instance(), SLOT( lowerVolume() ) );
|
||||||
connect( ui->volumeHighButton, SIGNAL( clicked() ), AudioEngine::instance(), SLOT( raiseVolume() ) );
|
connect( ui->volumeHighButton, SIGNAL( clicked() ), AudioEngine::instance(), SLOT( raiseVolume() ) );
|
||||||
|
|
||||||
|
|
||||||
connect( ui->playPauseButton, SIGNAL( clicked() ), this, SIGNAL( playPressed() ) );
|
connect( ui->playPauseButton, SIGNAL( clicked() ), this, SIGNAL( playPressed() ) );
|
||||||
connect( ui->pauseButton, SIGNAL( clicked() ), this, SIGNAL( pausePressed() ) );
|
connect( ui->pauseButton, SIGNAL( clicked() ), this, SIGNAL( pausePressed() ) );
|
||||||
|
|
||||||
@@ -147,6 +159,7 @@ AudioControls::AudioControls( QWidget* parent )
|
|||||||
connect( ui->artistTrackLabel, SIGNAL( clickedArtist() ), SLOT( onArtistClicked() ) );
|
connect( ui->artistTrackLabel, SIGNAL( clickedArtist() ), SLOT( onArtistClicked() ) );
|
||||||
connect( ui->artistTrackLabel, SIGNAL( clickedTrack() ), SLOT( onTrackClicked() ) );
|
connect( ui->artistTrackLabel, SIGNAL( clickedTrack() ), SLOT( onTrackClicked() ) );
|
||||||
connect( ui->albumLabel, SIGNAL( clickedAlbum() ), SLOT( onAlbumClicked() ) );
|
connect( ui->albumLabel, SIGNAL( clickedAlbum() ), SLOT( onAlbumClicked() ) );
|
||||||
|
connect( ui->loveButton, SIGNAL( clicked( bool ) ), SLOT( onLoveButtonClicked( bool ) ) );
|
||||||
|
|
||||||
// <From AudioEngine>
|
// <From AudioEngine>
|
||||||
connect( AudioEngine::instance(), SIGNAL( loading( Tomahawk::result_ptr ) ), SLOT( onPlaybackLoading( Tomahawk::result_ptr ) ) );
|
connect( AudioEngine::instance(), SIGNAL( loading( Tomahawk::result_ptr ) ), SLOT( onPlaybackLoading( Tomahawk::result_ptr ) ) );
|
||||||
@@ -161,11 +174,20 @@ AudioControls::AudioControls( QWidget* parent )
|
|||||||
.scaled( ui->coverImage->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
|
.scaled( ui->coverImage->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
|
||||||
|
|
||||||
connect( Tomahawk::InfoSystem::InfoSystem::instance(),
|
connect( Tomahawk::InfoSystem::InfoSystem::instance(),
|
||||||
SIGNAL( info( QString, Tomahawk::InfoSystem::InfoType, QVariant, QVariant, Tomahawk::InfoSystem::InfoCustomData ) ),
|
SIGNAL( info( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ),
|
||||||
SLOT( infoSystemInfo( QString, Tomahawk::InfoSystem::InfoType, QVariant, QVariant, Tomahawk::InfoSystem::InfoCustomData ) ) );
|
SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ) );
|
||||||
|
|
||||||
connect( Tomahawk::InfoSystem::InfoSystem::instance(), SIGNAL( finished( QString ) ), SLOT( infoSystemFinished( QString ) ) );
|
connect( Tomahawk::InfoSystem::InfoSystem::instance(), SIGNAL( finished( QString ) ), SLOT( infoSystemFinished( QString ) ) );
|
||||||
|
|
||||||
|
|
||||||
|
ui->buttonAreaLayout->setSpacing( 0 );
|
||||||
|
ui->stackedLayout->setSpacing( 0 );
|
||||||
|
ui->stackedLayout->setContentsMargins( 0, 0, 0, 0 );
|
||||||
|
ui->stackedLayout->setMargin( 0 );
|
||||||
|
ui->playPauseButton->setContentsMargins( 0, 0, 0, 0 );
|
||||||
|
ui->pauseButton->setContentsMargins( 0, 0, 0, 0 );
|
||||||
|
ui->stackedLayout->setSizeConstraint( QLayout::SetFixedSize );
|
||||||
|
|
||||||
onPlaybackStopped(); // initial state
|
onPlaybackStopped(); // initial state
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,7 +226,7 @@ AudioControls::onVolumeChanged( int volume )
|
|||||||
void
|
void
|
||||||
AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result )
|
AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result )
|
||||||
{
|
{
|
||||||
qDebug() << Q_FUNC_INFO;
|
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
|
||||||
|
|
||||||
onPlaybackLoading( result );
|
onPlaybackLoading( result );
|
||||||
|
|
||||||
@@ -212,38 +234,37 @@ AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result )
|
|||||||
trackInfo["artist"] = result->artist()->name();
|
trackInfo["artist"] = result->artist()->name();
|
||||||
trackInfo["album"] = result->album()->name();
|
trackInfo["album"] = result->album()->name();
|
||||||
|
|
||||||
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo(
|
Tomahawk::InfoSystem::InfoRequestData requestData;
|
||||||
s_acInfoIdentifier, Tomahawk::InfoSystem::InfoAlbumCoverArt,
|
requestData.caller = s_acInfoIdentifier;
|
||||||
QVariant::fromValue< Tomahawk::InfoSystem::InfoCriteriaHash >( trackInfo ), Tomahawk::InfoSystem::InfoCustomData() );
|
requestData.type = Tomahawk::InfoSystem::InfoAlbumCoverArt;
|
||||||
|
requestData.input = QVariant::fromValue< Tomahawk::InfoSystem::InfoCriteriaHash >( trackInfo );
|
||||||
|
requestData.customData = QVariantMap();
|
||||||
|
|
||||||
|
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
AudioControls::infoSystemInfo( QString caller, Tomahawk::InfoSystem::InfoType type, QVariant input, QVariant output, Tomahawk::InfoSystem::InfoCustomData customData )
|
AudioControls::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output )
|
||||||
{
|
{
|
||||||
Q_UNUSED( input );
|
if ( requestData.caller != s_acInfoIdentifier || requestData.type != Tomahawk::InfoSystem::InfoAlbumCoverArt )
|
||||||
Q_UNUSED( customData );
|
|
||||||
|
|
||||||
qDebug() << Q_FUNC_INFO << caller << type << s_acInfoIdentifier << Tomahawk::InfoSystem::InfoAlbumCoverArt;
|
|
||||||
if ( caller != s_acInfoIdentifier || type != Tomahawk::InfoSystem::InfoAlbumCoverArt )
|
|
||||||
{
|
{
|
||||||
qDebug() << "Info of wrong type or not with our identifier";
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( m_currentTrack.isNull() )
|
if ( m_currentTrack.isNull() )
|
||||||
{
|
{
|
||||||
qDebug() << "Current track is null when trying to apply fetched cover art";
|
tLog() << "Current track is null when trying to apply fetched cover art";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !output.canConvert< Tomahawk::InfoSystem::InfoCustomData >() )
|
if ( !output.canConvert< QVariantMap >() )
|
||||||
{
|
{
|
||||||
qDebug() << "Cannot convert fetched art from a QByteArray";
|
tDebug( LOGINFO ) << "Cannot convert fetched art from a QByteArray";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Tomahawk::InfoSystem::InfoCustomData returnedData = output.value< Tomahawk::InfoSystem::InfoCustomData >();
|
QVariantMap returnedData = output.value< QVariantMap >();
|
||||||
const QByteArray ba = returnedData["imgbytes"].toByteArray();
|
const QByteArray ba = returnedData["imgbytes"].toByteArray();
|
||||||
if ( ba.length() )
|
if ( ba.length() )
|
||||||
{
|
{
|
||||||
@@ -262,14 +283,13 @@ void
|
|||||||
AudioControls::infoSystemFinished( QString target )
|
AudioControls::infoSystemFinished( QString target )
|
||||||
{
|
{
|
||||||
Q_UNUSED( target );
|
Q_UNUSED( target );
|
||||||
qDebug() << Q_FUNC_INFO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result )
|
AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result )
|
||||||
{
|
{
|
||||||
qDebug() << Q_FUNC_INFO;
|
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
|
||||||
|
|
||||||
m_currentTrack = result;
|
m_currentTrack = result;
|
||||||
|
|
||||||
@@ -288,10 +308,35 @@ AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result )
|
|||||||
/* m_playAction->setEnabled( false );
|
/* m_playAction->setEnabled( false );
|
||||||
m_pauseAction->setEnabled( true ); */
|
m_pauseAction->setEnabled( true ); */
|
||||||
|
|
||||||
ui->pauseButton->setEnabled( true );
|
ui->stackedLayout->setCurrentWidget( ui->pauseButton );
|
||||||
ui->pauseButton->setVisible( true );
|
|
||||||
ui->playPauseButton->setVisible( false );
|
ui->loveButton->setEnabled( true );
|
||||||
ui->playPauseButton->setEnabled( false );
|
ui->loveButton->setVisible( true );
|
||||||
|
|
||||||
|
result->loadSocialActions();
|
||||||
|
|
||||||
|
connect( result.data(), SIGNAL( socialActionsLoaded() ), this, SLOT( socialActionsLoaded() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AudioControls::socialActionsLoaded()
|
||||||
|
{
|
||||||
|
Result* r = qobject_cast< Result* >( sender() );
|
||||||
|
Q_ASSERT( r );
|
||||||
|
|
||||||
|
if ( m_currentTrack.data() == r )
|
||||||
|
{
|
||||||
|
if ( m_currentTrack->loved() )
|
||||||
|
{
|
||||||
|
ui->loveButton->setPixmap( RESPATH "images/loved.png" );
|
||||||
|
ui->loveButton->setChecked( true );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui->loveButton->setPixmap( RESPATH "images/not-loved.png" );
|
||||||
|
ui->loveButton->setChecked( false );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -301,23 +346,17 @@ AudioControls::onPlaybackPaused()
|
|||||||
/* m_pauseAction->setEnabled( false );
|
/* m_pauseAction->setEnabled( false );
|
||||||
m_playAction->setEnabled( true ); */
|
m_playAction->setEnabled( true ); */
|
||||||
|
|
||||||
ui->pauseButton->setVisible( false );
|
ui->stackedLayout->setCurrentWidget( ui->playPauseButton );
|
||||||
ui->pauseButton->setEnabled( false );
|
|
||||||
ui->playPauseButton->setEnabled( true );
|
|
||||||
ui->playPauseButton->setVisible( true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
AudioControls::onPlaybackResumed()
|
AudioControls::onPlaybackResumed()
|
||||||
{
|
{
|
||||||
/* m_playAction->setEnabled( false );
|
/* m_playAction->setEnabled( false );
|
||||||
m_pauseAction->setEnabled( true ); */
|
m_pauseAction->setEnabled( true ); */
|
||||||
|
|
||||||
ui->pauseButton->setVisible( true );
|
ui->stackedLayout->setCurrentWidget( ui->pauseButton );
|
||||||
ui->pauseButton->setEnabled( true );
|
ui->loveButton->setVisible( true );
|
||||||
ui->playPauseButton->setVisible( false );
|
|
||||||
ui->playPauseButton->setEnabled( false );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -334,10 +373,9 @@ AudioControls::onPlaybackStopped()
|
|||||||
ui->coverImage->setPixmap( QPixmap() );
|
ui->coverImage->setPixmap( QPixmap() );
|
||||||
ui->seekSlider->setVisible( false );
|
ui->seekSlider->setVisible( false );
|
||||||
|
|
||||||
ui->pauseButton->setVisible( false );
|
ui->stackedLayout->setCurrentWidget( ui->playPauseButton );
|
||||||
ui->pauseButton->setEnabled( false );
|
ui->loveButton->setEnabled( false );
|
||||||
ui->playPauseButton->setEnabled( true );
|
ui->loveButton->setVisible( false );
|
||||||
ui->playPauseButton->setVisible( true );
|
|
||||||
|
|
||||||
/* m_pauseAction->setEnabled( false );
|
/* m_pauseAction->setEnabled( false );
|
||||||
m_playAction->setEnabled( true ); */
|
m_playAction->setEnabled( true ); */
|
||||||
@@ -478,3 +516,84 @@ AudioControls::onTrackClicked()
|
|||||||
{
|
{
|
||||||
ViewManager::instance()->showCurrentTrack();
|
ViewManager::instance()->showCurrentTrack();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
AudioControls::dragEnterEvent( QDragEnterEvent* e )
|
||||||
|
{
|
||||||
|
if ( GlobalActionManager::instance()->acceptsMimeData( e->mimeData() ) )
|
||||||
|
e->acceptProposedAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
AudioControls::dragMoveEvent( QDragMoveEvent* /* e */ )
|
||||||
|
{
|
||||||
|
// if ( GlobalActionManager::instance()->acceptsMimeData( e->mimeData() ) )
|
||||||
|
// e->acceptProposedAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
AudioControls::dropEvent( QDropEvent* e )
|
||||||
|
{
|
||||||
|
tDebug() << "AudioControls got drop:" << e->mimeData()->formats();
|
||||||
|
if ( GlobalActionManager::instance()->acceptsMimeData( e->mimeData() ) )
|
||||||
|
{
|
||||||
|
connect( GlobalActionManager::instance(), SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( droppedTracks( QList<Tomahawk::query_ptr> ) ) );
|
||||||
|
GlobalActionManager::instance()->tracksFromMimeData( e->mimeData() );
|
||||||
|
|
||||||
|
e->accept();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
AudioControls::droppedTracks( QList< query_ptr > tracks )
|
||||||
|
{
|
||||||
|
disconnect( GlobalActionManager::instance(), SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( droppedTracks( QList<Tomahawk::query_ptr> ) ) );
|
||||||
|
|
||||||
|
if ( !tracks.isEmpty() )
|
||||||
|
{
|
||||||
|
// queue and play the first if nothign is playing
|
||||||
|
GlobalActionManager::instance()->handleOpenTrack( tracks.first() );
|
||||||
|
|
||||||
|
// just queue the rest
|
||||||
|
for ( int i = 1; i < tracks.size(); i++ )
|
||||||
|
{
|
||||||
|
ViewManager::instance()->queue()->model()->append( tracks[ i ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
AudioControls::onLoveButtonClicked( bool checked )
|
||||||
|
{
|
||||||
|
Tomahawk::InfoSystem::InfoCriteriaHash trackInfo;
|
||||||
|
trackInfo["title"] = m_currentTrack->track();
|
||||||
|
trackInfo["artist"] = m_currentTrack->artist()->name();
|
||||||
|
trackInfo["album"] = m_currentTrack->album()->name();
|
||||||
|
|
||||||
|
if ( checked )
|
||||||
|
{
|
||||||
|
Tomahawk::InfoSystem::InfoSystem::instance()->pushInfo(
|
||||||
|
s_acInfoIdentifier, Tomahawk::InfoSystem::InfoLove,
|
||||||
|
QVariant::fromValue< Tomahawk::InfoSystem::InfoCriteriaHash >( trackInfo ) );
|
||||||
|
|
||||||
|
DatabaseCommand_SocialAction* cmd = new DatabaseCommand_SocialAction( m_currentTrack, QString( "Love" ), QString( "true") );
|
||||||
|
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );
|
||||||
|
ui->loveButton->setPixmap( RESPATH "images/loved.png" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Tomahawk::InfoSystem::InfoSystem::instance()->pushInfo(
|
||||||
|
s_acInfoIdentifier, Tomahawk::InfoSystem::InfoUnLove,
|
||||||
|
QVariant::fromValue< Tomahawk::InfoSystem::InfoCriteriaHash >( trackInfo ) );
|
||||||
|
|
||||||
|
DatabaseCommand_SocialAction* cmd = new DatabaseCommand_SocialAction( m_currentTrack, QString( "Love" ), QString( "false" ) );
|
||||||
|
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );
|
||||||
|
ui->loveButton->setPixmap( RESPATH "images/not-loved.png" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -25,6 +25,9 @@
|
|||||||
#include "playlistinterface.h"
|
#include "playlistinterface.h"
|
||||||
#include "infosystem/infosystem.h"
|
#include "infosystem/infosystem.h"
|
||||||
|
|
||||||
|
class QDropEvent;
|
||||||
|
class QDragEnterEvent;
|
||||||
|
class QDragMoveEvent;
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
class AudioControls;
|
class AudioControls;
|
||||||
@@ -43,11 +46,14 @@ signals:
|
|||||||
void pausePressed();
|
void pausePressed();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void onRepeatModeChanged( PlaylistInterface::RepeatMode mode );
|
void onRepeatModeChanged( Tomahawk::PlaylistInterface::RepeatMode mode );
|
||||||
void onShuffleModeChanged( bool enabled );
|
void onShuffleModeChanged( bool enabled );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void changeEvent( QEvent* e );
|
void changeEvent( QEvent* e );
|
||||||
|
void dragEnterEvent ( QDragEnterEvent* );
|
||||||
|
void dragMoveEvent ( QDragMoveEvent* );
|
||||||
|
void dropEvent ( QDropEvent* );
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onPlaybackStarted( const Tomahawk::result_ptr& result );
|
void onPlaybackStarted( const Tomahawk::result_ptr& result );
|
||||||
@@ -65,10 +71,14 @@ private slots:
|
|||||||
void onArtistClicked();
|
void onArtistClicked();
|
||||||
void onAlbumClicked();
|
void onAlbumClicked();
|
||||||
void onTrackClicked();
|
void onTrackClicked();
|
||||||
|
void onLoveButtonClicked( bool );
|
||||||
|
|
||||||
void infoSystemInfo( QString caller, Tomahawk::InfoSystem::InfoType type, QVariant input, QVariant output, Tomahawk::InfoSystem::InfoCustomData customData );
|
void infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output );
|
||||||
void infoSystemFinished( QString target );
|
void infoSystemFinished( QString target );
|
||||||
|
|
||||||
|
void droppedTracks( QList<Tomahawk::query_ptr> );
|
||||||
|
|
||||||
|
void socialActionsLoaded();
|
||||||
private:
|
private:
|
||||||
Ui::AudioControls *ui;
|
Ui::AudioControls *ui;
|
||||||
|
|
||||||
@@ -80,7 +90,7 @@ private:
|
|||||||
QPixmap m_defaultCover;
|
QPixmap m_defaultCover;
|
||||||
|
|
||||||
Tomahawk::result_ptr m_currentTrack;
|
Tomahawk::result_ptr m_currentTrack;
|
||||||
PlaylistInterface::RepeatMode m_repeatMode;
|
Tomahawk::PlaylistInterface::RepeatMode m_repeatMode;
|
||||||
bool m_shuffled;
|
bool m_shuffled;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>939</width>
|
<width>929</width>
|
||||||
<height>80</height>
|
<height>80</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="buttonAreaLayout">
|
<layout class="QHBoxLayout" name="buttonAreaLayout">
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer_2">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
@@ -80,18 +80,25 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="ImageButton" name="playPauseButton">
|
<layout class="QStackedLayout" name="stackedLayout">
|
||||||
<property name="text">
|
<property name="spacing">
|
||||||
<string>Play</string>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
<item>
|
||||||
</item>
|
<widget class="ImageButton" name="playPauseButton">
|
||||||
<item>
|
<property name="text">
|
||||||
<widget class="ImageButton" name="pauseButton">
|
<string>Play</string>
|
||||||
<property name="text">
|
</property>
|
||||||
<string>Pause</string>
|
</widget>
|
||||||
</property>
|
</item>
|
||||||
</widget>
|
<item>
|
||||||
|
<widget class="ImageButton" name="pauseButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Pause</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="ImageButton" name="nextButton">
|
<widget class="ImageButton" name="nextButton">
|
||||||
@@ -101,7 +108,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer_2">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
@@ -251,6 +258,39 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="ImageButton" name="loveButton">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="cursor">
|
||||||
|
<cursorShape>PointingHandCursor</cursorShape>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>love</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>13</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="ownerLabel">
|
<widget class="QLabel" name="ownerLabel">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
|
@@ -18,12 +18,13 @@
|
|||||||
|
|
||||||
#include "configdelegatebase.h"
|
#include "configdelegatebase.h"
|
||||||
|
|
||||||
#include "utils/tomahawkutils.h"
|
|
||||||
|
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
|
|
||||||
|
#include "utils/tomahawkutils.h"
|
||||||
|
#include "utils/logger.h"
|
||||||
|
|
||||||
ConfigDelegateBase::ConfigDelegateBase ( QObject* parent )
|
ConfigDelegateBase::ConfigDelegateBase ( QObject* parent )
|
||||||
: QStyledItemDelegate ( parent )
|
: QStyledItemDelegate ( parent )
|
||||||
{
|
{
|
||||||
@@ -97,13 +98,13 @@ ConfigDelegateBase::editorEvent ( QEvent* event, QAbstractItemModel* model, cons
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// eat the double click events inside the check rect
|
// eat the double click events inside the check rect
|
||||||
if( event->type() == QEvent::MouseButtonDblClick ) {
|
if( event->type() == QEvent::MouseButtonDblClick ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Qt::CheckState curState = static_cast< Qt::CheckState >( index.data( Qt::CheckStateRole ).toInt() );
|
Qt::CheckState curState = static_cast< Qt::CheckState >( index.data( Qt::CheckStateRole ).toInt() );
|
||||||
Qt::CheckState newState = curState == Qt::Checked ? Qt::Unchecked : Qt::Checked;
|
Qt::CheckState newState = curState == Qt::Checked ? Qt::Unchecked : Qt::Checked;
|
||||||
return model->setData( index, newState, Qt::CheckStateRole );
|
return model->setData( index, newState, Qt::CheckStateRole );
|
||||||
|
|
||||||
} else if( event->type() == QEvent::MouseButtonPress ) {
|
} else if( event->type() == QEvent::MouseButtonPress ) {
|
||||||
QMouseEvent* me = static_cast< QMouseEvent* >( event );
|
QMouseEvent* me = static_cast< QMouseEvent* >( event );
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QDialogButtonBox>
|
#include <QDialogButtonBox>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
class DelegateConfigWrapper : public QDialog
|
class DelegateConfigWrapper : public QDialog
|
||||||
{
|
{
|
||||||
@@ -28,8 +29,10 @@ class DelegateConfigWrapper : public QDialog
|
|||||||
public:
|
public:
|
||||||
DelegateConfigWrapper( QWidget* conf, const QString& title, QWidget* parent, Qt::WindowFlags flags = 0 ) : QDialog( parent, flags ), m_widget( conf )
|
DelegateConfigWrapper( QWidget* conf, const QString& title, QWidget* parent, Qt::WindowFlags flags = 0 ) : QDialog( parent, flags ), m_widget( conf )
|
||||||
{
|
{
|
||||||
m_widget->setVisible( true );
|
|
||||||
m_widget->setWindowFlags( Qt::Sheet );
|
m_widget->setWindowFlags( Qt::Sheet );
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
m_widget->setVisible( true );
|
||||||
|
#endif
|
||||||
|
|
||||||
setWindowTitle( title );
|
setWindowTitle( title );
|
||||||
QVBoxLayout* v = new QVBoxLayout( this );
|
QVBoxLayout* v = new QVBoxLayout( this );
|
||||||
@@ -37,6 +40,7 @@ public:
|
|||||||
v->addWidget( m_widget );
|
v->addWidget( m_widget );
|
||||||
|
|
||||||
QDialogButtonBox* buttons = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this );
|
QDialogButtonBox* buttons = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this );
|
||||||
|
m_okButton = buttons->button( QDialogButtonBox::Ok );
|
||||||
connect( buttons, SIGNAL( clicked( QAbstractButton*) ), this, SLOT( closed( QAbstractButton* ) ) );
|
connect( buttons, SIGNAL( clicked( QAbstractButton*) ), this, SLOT( closed( QAbstractButton* ) ) );
|
||||||
connect( this, SIGNAL( rejected() ), this, SLOT( rejected() ) );
|
connect( this, SIGNAL( rejected() ), this, SLOT( rejected() ) );
|
||||||
v->addWidget( buttons );
|
v->addWidget( buttons );
|
||||||
@@ -47,9 +51,19 @@ public:
|
|||||||
setSizeGripEnabled( false );
|
setSizeGripEnabled( false );
|
||||||
setMinimumSize( sizeHint() );
|
setMinimumSize( sizeHint() );
|
||||||
setMaximumSize( sizeHint() ); // to remove the resize grip on osx this is the only way
|
setMaximumSize( sizeHint() ); // to remove the resize grip on osx this is the only way
|
||||||
|
|
||||||
|
connect( conf, SIGNAL( sizeHintChanged() ), this, SLOT( updateSizeHint() ) );
|
||||||
|
#else
|
||||||
|
m_widget->setVisible( true );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
public slots:
|
public slots:
|
||||||
|
void toggleOkButton( bool dataError )
|
||||||
|
{
|
||||||
|
// if dataError is True we want to set the button enabled to false
|
||||||
|
m_okButton->setEnabled( !dataError );
|
||||||
|
}
|
||||||
void closed( QAbstractButton* b )
|
void closed( QAbstractButton* b )
|
||||||
{
|
{
|
||||||
// let the config widget live to see another day
|
// let the config widget live to see another day
|
||||||
@@ -72,8 +86,18 @@ public slots:
|
|||||||
m_widget->setVisible( false );
|
m_widget->setVisible( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void updateSizeHint() {
|
||||||
|
hide();
|
||||||
|
setSizeGripEnabled( false );
|
||||||
|
setMinimumSize( sizeHint() );
|
||||||
|
setMaximumSize( sizeHint() );
|
||||||
|
|
||||||
|
show();
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QWidget* m_widget;
|
QWidget* m_widget;
|
||||||
|
QPushButton* m_okButton;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -19,17 +19,21 @@
|
|||||||
#include "diagnosticsdialog.h"
|
#include "diagnosticsdialog.h"
|
||||||
#include "ui_diagnosticsdialog.h"
|
#include "ui_diagnosticsdialog.h"
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
#include <sip/SipHandler.h>
|
#include <sip/SipHandler.h>
|
||||||
#include <network/servent.h>
|
#include <network/servent.h>
|
||||||
#include <sourcelist.h>
|
#include <sourcelist.h>
|
||||||
|
|
||||||
#include <QTextEdit>
|
#include <QTextEdit>
|
||||||
#include <QDebug>
|
|
||||||
#include <QDialogButtonBox>
|
#include <QDialogButtonBox>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
|
|
||||||
|
#include "utils/logger.h"
|
||||||
|
|
||||||
|
|
||||||
DiagnosticsDialog::DiagnosticsDialog( QWidget *parent )
|
DiagnosticsDialog::DiagnosticsDialog( QWidget *parent )
|
||||||
: QDialog( parent )
|
: QDialog( parent )
|
||||||
, ui( new Ui::DiagnosticsDialog )
|
, ui( new Ui::DiagnosticsDialog )
|
||||||
@@ -52,6 +56,11 @@ void DiagnosticsDialog::updateLogView()
|
|||||||
.arg( QDateTime::currentDateTime().toString() )
|
.arg( QDateTime::currentDateTime().toString() )
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// network
|
||||||
|
log.append(
|
||||||
|
"TOMAHAWK-VERSION: " TOMAHAWK_VERSION "\n\n\n"
|
||||||
|
);
|
||||||
|
|
||||||
// network
|
// network
|
||||||
log.append(
|
log.append(
|
||||||
"NETWORK:\n"
|
"NETWORK:\n"
|
||||||
|
@@ -20,7 +20,6 @@
|
|||||||
#define DIAGNOSTICSDIALOG_H
|
#define DIAGNOSTICSDIALOG_H
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QDebug>
|
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
|
@@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>621</width>
|
<width>724</width>
|
||||||
<height>434</height>
|
<height>433</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
@@ -20,6 +20,9 @@
|
|||||||
<string>Tomahawk Diagnostics</string>
|
<string>Tomahawk Diagnostics</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<property name="margin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<item>
|
<item>
|
||||||
@@ -57,8 +60,6 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources/>
|
||||||
<include location="../resources.qrc"/>
|
|
||||||
</resources>
|
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
@@ -22,8 +22,7 @@
|
|||||||
#ifdef ENABLE_HEADLESS
|
#ifdef ENABLE_HEADLESS
|
||||||
|
|
||||||
#define TOMAHAWK_APPLICATION QCoreApplication
|
#define TOMAHAWK_APPLICATION QCoreApplication
|
||||||
#define TOMAHAWK_HEADLESS
|
#include <QApplication>
|
||||||
#include <QApplication>>
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@@ -21,15 +21,16 @@ set( libSources
|
|||||||
artist.cpp
|
artist.cpp
|
||||||
album.cpp
|
album.cpp
|
||||||
collection.cpp
|
collection.cpp
|
||||||
webcollection.cpp
|
|
||||||
playlist.cpp
|
playlist.cpp
|
||||||
resolver.cpp
|
resolver.cpp
|
||||||
query.cpp
|
query.cpp
|
||||||
result.cpp
|
result.cpp
|
||||||
source.cpp
|
source.cpp
|
||||||
|
sourceplaylistinterface.cpp
|
||||||
viewpage.cpp
|
viewpage.cpp
|
||||||
viewmanager.cpp
|
viewmanager.cpp
|
||||||
globalactionmanager.cpp
|
globalactionmanager.cpp
|
||||||
|
contextmenu.cpp
|
||||||
|
|
||||||
sip/SipPlugin.cpp
|
sip/SipPlugin.cpp
|
||||||
sip/SipHandler.cpp
|
sip/SipHandler.cpp
|
||||||
@@ -54,6 +55,7 @@ set( libSources
|
|||||||
database/databasecommand_addfiles.cpp
|
database/databasecommand_addfiles.cpp
|
||||||
database/databasecommand_deletefiles.cpp
|
database/databasecommand_deletefiles.cpp
|
||||||
database/databasecommand_dirmtimes.cpp
|
database/databasecommand_dirmtimes.cpp
|
||||||
|
database/databasecommand_filemtimes.cpp
|
||||||
database/databasecommand_loadfile.cpp
|
database/databasecommand_loadfile.cpp
|
||||||
database/databasecommand_logplayback.cpp
|
database/databasecommand_logplayback.cpp
|
||||||
database/databasecommand_addsource.cpp
|
database/databasecommand_addsource.cpp
|
||||||
@@ -73,19 +75,24 @@ set( libSources
|
|||||||
database/databasecommand_setdynamicplaylistrevision.cpp
|
database/databasecommand_setdynamicplaylistrevision.cpp
|
||||||
database/databasecommand_createdynamicplaylist.cpp
|
database/databasecommand_createdynamicplaylist.cpp
|
||||||
database/databasecommand_loaddynamicplaylist.cpp
|
database/databasecommand_loaddynamicplaylist.cpp
|
||||||
|
database/databasecommand_loaddynamicplaylistentries.cpp
|
||||||
database/databasecommand_loadallautoplaylists.cpp
|
database/databasecommand_loadallautoplaylists.cpp
|
||||||
database/databasecommand_loadallstations.cpp
|
database/databasecommand_loadallstations.cpp
|
||||||
database/databasecommand_deletedynamicplaylist.cpp
|
database/databasecommand_deletedynamicplaylist.cpp
|
||||||
database/databasecommand_addclientauth.cpp
|
database/databasecommand_addclientauth.cpp
|
||||||
database/databasecommand_clientauthvalid.cpp
|
database/databasecommand_clientauthvalid.cpp
|
||||||
|
database/databasecommand_socialaction.cpp
|
||||||
|
database/databasecommand_loadsocialactions.cpp
|
||||||
|
database/databasecommand_genericselect.cpp
|
||||||
database/database.cpp
|
database/database.cpp
|
||||||
|
|
||||||
infosystem/infosystemcache.cpp
|
infosystem/infosystemcache.cpp
|
||||||
infosystem/infosystem.cpp
|
infosystem/infosystem.cpp
|
||||||
infosystem/infosystemworker.cpp
|
infosystem/infosystemworker.cpp
|
||||||
infosystem/infoplugins/echonestplugin.cpp
|
infosystem/infoplugins/generic/echonestplugin.cpp
|
||||||
infosystem/infoplugins/lastfmplugin.cpp
|
infosystem/infoplugins/generic/lastfmplugin.cpp
|
||||||
infosystem/infoplugins/musixmatchplugin.cpp
|
infosystem/infoplugins/generic/musixmatchplugin.cpp
|
||||||
|
infosystem/infoplugins/generic/musicbrainzPlugin.cpp
|
||||||
|
|
||||||
playlist/treemodel.cpp
|
playlist/treemodel.cpp
|
||||||
playlist/treeproxymodel.cpp
|
playlist/treeproxymodel.cpp
|
||||||
@@ -112,6 +119,7 @@ set( libSources
|
|||||||
playlist/albumitemdelegate.cpp
|
playlist/albumitemdelegate.cpp
|
||||||
playlist/albumview.cpp
|
playlist/albumview.cpp
|
||||||
playlist/artistview.cpp
|
playlist/artistview.cpp
|
||||||
|
playlist/customplaylistview.cpp
|
||||||
|
|
||||||
playlist/topbar/topbar.cpp
|
playlist/topbar/topbar.cpp
|
||||||
playlist/topbar/clearbutton.cpp
|
playlist/topbar/clearbutton.cpp
|
||||||
@@ -138,6 +146,8 @@ set( libSources
|
|||||||
playlist/dynamic/widgets/CollapsibleControls.cpp
|
playlist/dynamic/widgets/CollapsibleControls.cpp
|
||||||
playlist/dynamic/widgets/DynamicSetupWidget.cpp
|
playlist/dynamic/widgets/DynamicSetupWidget.cpp
|
||||||
playlist/dynamic/widgets/LoadingSpinner.cpp
|
playlist/dynamic/widgets/LoadingSpinner.cpp
|
||||||
|
playlist/dynamic/database/DatabaseControl.cpp
|
||||||
|
playlist/dynamic/database/DatabaseGenerator.cpp
|
||||||
|
|
||||||
network/bufferiodevice.cpp
|
network/bufferiodevice.cpp
|
||||||
network/msgprocessor.cpp
|
network/msgprocessor.cpp
|
||||||
@@ -153,19 +163,28 @@ set( libSources
|
|||||||
utils/querylabel.cpp
|
utils/querylabel.cpp
|
||||||
utils/elidedlabel.cpp
|
utils/elidedlabel.cpp
|
||||||
utils/imagebutton.cpp
|
utils/imagebutton.cpp
|
||||||
utils/progresstreeview.cpp
|
utils/logger.cpp
|
||||||
utils/proxystyle.cpp
|
utils/proxystyle.cpp
|
||||||
utils/widgetdragfilter.cpp
|
utils/widgetdragfilter.cpp
|
||||||
utils/animatedsplitter.cpp
|
utils/animatedsplitter.cpp
|
||||||
utils/xspfloader.cpp
|
utils/xspfloader.cpp
|
||||||
utils/xspfgenerator.cpp
|
utils/xspfgenerator.cpp
|
||||||
|
utils/jspfloader.cpp
|
||||||
|
utils/spotifyparser.cpp
|
||||||
|
utils/rdioparser.cpp
|
||||||
|
utils/shortenedlinkparser.cpp
|
||||||
|
|
||||||
widgets/newplaylistwidget.cpp
|
widgets/newplaylistwidget.cpp
|
||||||
|
widgets/searchwidget.cpp
|
||||||
widgets/playlisttypeselectordlg.cpp
|
widgets/playlisttypeselectordlg.cpp
|
||||||
widgets/welcomewidget.cpp
|
widgets/welcomewidget.cpp
|
||||||
widgets/welcomeplaylistmodel.cpp
|
widgets/welcomeplaylistmodel.cpp
|
||||||
widgets/overlaywidget.cpp
|
widgets/overlaywidget.cpp
|
||||||
|
widgets/HeaderLabel.cpp
|
||||||
|
widgets/SocialPlaylistWidget.cpp
|
||||||
widgets/infowidgets/sourceinfowidget.cpp
|
widgets/infowidgets/sourceinfowidget.cpp
|
||||||
|
widgets/infowidgets/ArtistInfoWidget.cpp
|
||||||
|
widgets/infowidgets/AlbumInfoWidget.cpp
|
||||||
|
|
||||||
kdsingleapplicationguard/kdsingleapplicationguard.cpp
|
kdsingleapplicationguard/kdsingleapplicationguard.cpp
|
||||||
kdsingleapplicationguard/kdsharedmemorylocker.cpp
|
kdsingleapplicationguard/kdsharedmemorylocker.cpp
|
||||||
@@ -181,18 +200,17 @@ set( libHeaders
|
|||||||
|
|
||||||
aclsystem.h
|
aclsystem.h
|
||||||
collection.h
|
collection.h
|
||||||
webcollection.h
|
|
||||||
query.h
|
query.h
|
||||||
resolver.h
|
resolver.h
|
||||||
result.h
|
result.h
|
||||||
source.h
|
source.h
|
||||||
viewpage.h
|
sourceplaylistinterface.h
|
||||||
viewmanager.h
|
viewmanager.h
|
||||||
globalactionmanager.h
|
globalactionmanager.h
|
||||||
|
contextmenu.h
|
||||||
|
|
||||||
artist.h
|
artist.h
|
||||||
album.h
|
album.h
|
||||||
track.h
|
|
||||||
playlist.h
|
playlist.h
|
||||||
|
|
||||||
sip/SipPlugin.h
|
sip/SipPlugin.h
|
||||||
@@ -216,6 +234,7 @@ set( libHeaders
|
|||||||
database/databasecommand_addfiles.h
|
database/databasecommand_addfiles.h
|
||||||
database/databasecommand_deletefiles.h
|
database/databasecommand_deletefiles.h
|
||||||
database/databasecommand_dirmtimes.h
|
database/databasecommand_dirmtimes.h
|
||||||
|
database/databasecommand_filemtimes.h
|
||||||
database/databasecommand_loadfile.h
|
database/databasecommand_loadfile.h
|
||||||
database/databasecommand_logplayback.h
|
database/databasecommand_logplayback.h
|
||||||
database/databasecommand_addsource.h
|
database/databasecommand_addsource.h
|
||||||
@@ -237,18 +256,23 @@ set( libHeaders
|
|||||||
database/databasecommand_setdynamicplaylistrevision.h
|
database/databasecommand_setdynamicplaylistrevision.h
|
||||||
database/databasecommand_createdynamicplaylist.h
|
database/databasecommand_createdynamicplaylist.h
|
||||||
database/databasecommand_loaddynamicplaylist.h
|
database/databasecommand_loaddynamicplaylist.h
|
||||||
|
database/databasecommand_loaddynamicplaylistentries.h
|
||||||
database/databasecommand_deletedynamicplaylist.h
|
database/databasecommand_deletedynamicplaylist.h
|
||||||
database/databasecommand_loadallautoplaylists.h
|
database/databasecommand_loadallautoplaylists.h
|
||||||
database/databasecommand_loadallstations.h
|
database/databasecommand_loadallstations.h
|
||||||
database/databasecommand_addclientauth.h
|
database/databasecommand_addclientauth.h
|
||||||
database/databasecommand_clientauthvalid.h
|
database/databasecommand_clientauthvalid.h
|
||||||
|
database/databasecommand_socialaction.h
|
||||||
|
database/databasecommand_loadsocialactions.h
|
||||||
|
database/databasecommand_genericselect.h
|
||||||
|
|
||||||
infosystem/infosystem.h
|
infosystem/infosystem.h
|
||||||
infosystem/infosystemworker.h
|
infosystem/infosystemworker.h
|
||||||
infosystem/infosystemcache.h
|
infosystem/infosystemcache.h
|
||||||
infosystem/infoplugins/echonestplugin.h
|
infosystem/infoplugins/generic/echonestplugin.h
|
||||||
infosystem/infoplugins/lastfmplugin.h
|
infosystem/infoplugins/generic/lastfmplugin.h
|
||||||
infosystem/infoplugins/musixmatchplugin.h
|
infosystem/infoplugins/generic/musixmatchplugin.h
|
||||||
|
infosystem/infoplugins/generic/musicbrainzPlugin.h
|
||||||
|
|
||||||
network/bufferiodevice.h
|
network/bufferiodevice.h
|
||||||
network/msgprocessor.h
|
network/msgprocessor.h
|
||||||
@@ -285,6 +309,7 @@ set( libHeaders
|
|||||||
playlist/albumitemdelegate.h
|
playlist/albumitemdelegate.h
|
||||||
playlist/albumview.h
|
playlist/albumview.h
|
||||||
playlist/artistview.h
|
playlist/artistview.h
|
||||||
|
playlist/customplaylistview.h
|
||||||
|
|
||||||
playlist/topbar/topbar.h
|
playlist/topbar/topbar.h
|
||||||
playlist/topbar/clearbutton.h
|
playlist/topbar/clearbutton.h
|
||||||
@@ -297,7 +322,6 @@ set( libHeaders
|
|||||||
|
|
||||||
playlist/dynamic/DynamicPlaylist.h
|
playlist/dynamic/DynamicPlaylist.h
|
||||||
playlist/dynamic/DynamicControl.h
|
playlist/dynamic/DynamicControl.h
|
||||||
playlist/dynamic/GeneratorFactory.h
|
|
||||||
playlist/dynamic/GeneratorInterface.h
|
playlist/dynamic/GeneratorInterface.h
|
||||||
playlist/dynamic/DynamicView.h
|
playlist/dynamic/DynamicView.h
|
||||||
playlist/dynamic/DynamicModel.h
|
playlist/dynamic/DynamicModel.h
|
||||||
@@ -312,39 +336,57 @@ set( libHeaders
|
|||||||
playlist/dynamic/widgets/CollapsibleControls.h
|
playlist/dynamic/widgets/CollapsibleControls.h
|
||||||
playlist/dynamic/widgets/DynamicSetupWidget.h
|
playlist/dynamic/widgets/DynamicSetupWidget.h
|
||||||
playlist/dynamic/widgets/LoadingSpinner.h
|
playlist/dynamic/widgets/LoadingSpinner.h
|
||||||
|
playlist/dynamic/database/DatabaseControl.h
|
||||||
|
playlist/dynamic/database/DatabaseGenerator.h
|
||||||
|
|
||||||
utils/tomahawkutils.h
|
|
||||||
utils/querylabel.h
|
utils/querylabel.h
|
||||||
utils/elidedlabel.h
|
utils/elidedlabel.h
|
||||||
utils/animatedcounterlabel.h
|
utils/animatedcounterlabel.h
|
||||||
utils/imagebutton.h
|
utils/imagebutton.h
|
||||||
utils/progresstreeview.h
|
|
||||||
utils/widgetdragfilter.h
|
utils/widgetdragfilter.h
|
||||||
utils/animatedsplitter.h
|
utils/animatedsplitter.h
|
||||||
utils/xspfloader.h
|
utils/xspfloader.h
|
||||||
utils/xspfgenerator.h
|
utils/xspfgenerator.h
|
||||||
|
utils/jspfloader.h
|
||||||
|
utils/spotifyparser.h
|
||||||
|
utils/rdioparser.h
|
||||||
|
utils/shortenedlinkparser.h
|
||||||
|
|
||||||
widgets/newplaylistwidget.h
|
widgets/newplaylistwidget.h
|
||||||
|
widgets/searchwidget.h
|
||||||
widgets/playlisttypeselectordlg.h
|
widgets/playlisttypeselectordlg.h
|
||||||
widgets/welcomewidget.h
|
widgets/welcomewidget.h
|
||||||
widgets/welcomeplaylistmodel.h
|
widgets/welcomeplaylistmodel.h
|
||||||
widgets/overlaywidget.h
|
widgets/overlaywidget.h
|
||||||
|
widgets/HeaderLabel.h
|
||||||
|
widgets/SocialPlaylistWidget.h
|
||||||
widgets/infowidgets/sourceinfowidget.h
|
widgets/infowidgets/sourceinfowidget.h
|
||||||
|
widgets/infowidgets/ArtistInfoWidget.h
|
||||||
|
widgets/infowidgets/AlbumInfoWidget.h
|
||||||
|
|
||||||
kdsingleapplicationguard/kdsingleapplicationguard.h
|
kdsingleapplicationguard/kdsingleapplicationguard.h
|
||||||
kdsingleapplicationguard/kdsharedmemorylocker.h
|
|
||||||
kdsingleapplicationguard/kdtoolsglobal.h
|
|
||||||
kdsingleapplicationguard/kdlockedsharedmemorypointer.h
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set( libHeaders_NoMOC
|
set( libHeaders_NoMOC
|
||||||
playlist/dynamic/GeneratorInterface.h
|
viewpage.h
|
||||||
|
|
||||||
|
infosystem/infoplugins/unix/imageconverter.h
|
||||||
|
|
||||||
|
playlist/dynamic/GeneratorInterface.h
|
||||||
|
playlist/dynamic/GeneratorFactory.h
|
||||||
|
|
||||||
|
utils/tomahawkutils.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set( libUI ${libUI}
|
set( libUI ${libUI}
|
||||||
widgets/playlisttypeselectordlg.ui
|
widgets/playlisttypeselectordlg.ui
|
||||||
widgets/newplaylistwidget.ui
|
widgets/newplaylistwidget.ui
|
||||||
|
widgets/searchwidget.ui
|
||||||
widgets/welcomewidget.ui
|
widgets/welcomewidget.ui
|
||||||
|
widgets/SocialPlaylistWidget.ui
|
||||||
widgets/infowidgets/sourceinfowidget.ui
|
widgets/infowidgets/sourceinfowidget.ui
|
||||||
|
widgets/infowidgets/ArtistInfoWidget.ui
|
||||||
|
widgets/infowidgets/AlbumInfoWidget.ui
|
||||||
playlist/topbar/topbar.ui
|
playlist/topbar/topbar.ui
|
||||||
playlist/infobar/infobar.ui
|
playlist/infobar/infobar.ui
|
||||||
)
|
)
|
||||||
@@ -367,6 +409,14 @@ include_directories( . ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/.
|
|||||||
${CMAKE_BINARY_DIR}/thirdparty/liblastfm2/src
|
${CMAKE_BINARY_DIR}/thirdparty/liblastfm2/src
|
||||||
)
|
)
|
||||||
|
|
||||||
|
IF( UNIX AND NOT APPLE )
|
||||||
|
SET( libSources ${libSources}
|
||||||
|
infosystem/infoplugins/unix/fdonotifyplugin.cpp
|
||||||
|
infosystem/infoplugins/unix/imageconverter.cpp )
|
||||||
|
|
||||||
|
SET( libHeaders ${libHeaders}
|
||||||
|
infosystem/infoplugins/unix/fdonotifyplugin.h )
|
||||||
|
ENDIF( UNIX AND NOT APPLE )
|
||||||
|
|
||||||
IF( WIN32 )
|
IF( WIN32 )
|
||||||
SET( OS_SPECIFIC_LINK_LIBRARIES
|
SET( OS_SPECIFIC_LINK_LIBRARIES
|
||||||
@@ -384,13 +434,30 @@ ENDIF( WIN32 )
|
|||||||
IF( APPLE )
|
IF( APPLE )
|
||||||
FIND_LIBRARY( COREAUDIO_LIBRARY CoreAudio )
|
FIND_LIBRARY( COREAUDIO_LIBRARY CoreAudio )
|
||||||
FIND_LIBRARY( COREFOUNDATION_LIBRARY CoreFoundation )
|
FIND_LIBRARY( COREFOUNDATION_LIBRARY CoreFoundation )
|
||||||
MARK_AS_ADVANCED( COREAUDIO_LIBRARY COREFOUNDATION_LIBRARY )
|
FIND_LIBRARY( FOUNDATION_LIBRARY Foundation )
|
||||||
|
FIND_LIBRARY( SCRIPTINGBRIDGE_LIBRARY ScriptingBridge )
|
||||||
|
MARK_AS_ADVANCED( COREAUDIO_LIBRARY COREFOUNDATION_LIBRARY FOUNDATION_LIBRARY SCRIPTINGBRIDGE_LIBRARY )
|
||||||
|
|
||||||
|
SET( libSources ${libSources}
|
||||||
|
infosystem/infoplugins/mac/adium.mm
|
||||||
|
infosystem/infoplugins/mac/adiumplugin.cpp
|
||||||
|
widgets/maclineedit.mm
|
||||||
|
utils/tomahawkutils_mac.mm )
|
||||||
|
|
||||||
|
SET( libHeaders ${libHeaders}
|
||||||
|
widgets/maclineedit.h
|
||||||
|
infosystem/infoplugins/mac/adium.h
|
||||||
|
infosystem/infoplugins/mac/adiumplugin.h )
|
||||||
|
|
||||||
SET( OS_SPECIFIC_LINK_LIBRARIES
|
SET( OS_SPECIFIC_LINK_LIBRARIES
|
||||||
${OS_SPECIFIC_LINK_LIBRARIES}
|
${OS_SPECIFIC_LINK_LIBRARIES}
|
||||||
# System
|
# System
|
||||||
${COREAUDIO_LIBRARY}
|
${COREAUDIO_LIBRARY}
|
||||||
${COREFOUNDATION_LIBRARY}
|
${COREFOUNDATION_LIBRARY}
|
||||||
|
${FOUNDATION_LIBRARY}
|
||||||
|
${SCRIPTINGBRIDGE_LIBRARY}
|
||||||
|
|
||||||
|
/System/Library/Frameworks/AppKit.framework
|
||||||
)
|
)
|
||||||
ENDIF( APPLE )
|
ENDIF( APPLE )
|
||||||
|
|
||||||
@@ -415,6 +482,7 @@ target_link_libraries( tomahawklib
|
|||||||
${TAGLIB_LIBRARIES}
|
${TAGLIB_LIBRARIES}
|
||||||
${CLUCENE_LIBRARIES}
|
${CLUCENE_LIBRARIES}
|
||||||
${LIBECHONEST_LIBRARY}
|
${LIBECHONEST_LIBRARY}
|
||||||
|
${QT_QTUITOOLS_LIBRARY}
|
||||||
${QT_LIBRARIES}
|
${QT_LIBRARIES}
|
||||||
${OS_SPECIFIC_LINK_LIBRARIES}
|
${OS_SPECIFIC_LINK_LIBRARIES}
|
||||||
${CMAKE_THREAD_LIBS_INIT}
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
@@ -18,12 +18,14 @@
|
|||||||
|
|
||||||
#include "aclsystem.h"
|
#include "aclsystem.h"
|
||||||
|
|
||||||
#include <QtDebug>
|
|
||||||
#include <QMutexLocker>
|
#include <QMutexLocker>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
|
||||||
#include <tomahawksettings.h>
|
#include <tomahawksettings.h>
|
||||||
|
|
||||||
|
#include "utils/logger.h"
|
||||||
|
|
||||||
|
|
||||||
ACLSystem* ACLSystem::s_instance = 0;
|
ACLSystem* ACLSystem::s_instance = 0;
|
||||||
|
|
||||||
ACLSystem*
|
ACLSystem*
|
||||||
|