Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9a58b9072d |
6
.gitignore
vendored
@@ -11,8 +11,4 @@ moc_*
|
||||
/tomahawk
|
||||
thirdparty/qtweetlib/WARNING-twitter-api-keys
|
||||
.kdev4
|
||||
*.kdev4
|
||||
*.kate-swp
|
||||
clang/
|
||||
win/
|
||||
gcc/
|
||||
tomahawk.kdev4
|
||||
|
112
CMakeLists.txt
@@ -1,6 +1,5 @@
|
||||
PROJECT( tomahawk )
|
||||
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
|
||||
SET( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" )
|
||||
|
||||
IF( ${CMAKE_VERSION} VERSION_GREATER 2.8.3 )
|
||||
CMAKE_POLICY(SET CMP0017 NEW)
|
||||
@@ -12,73 +11,41 @@ ENDIF( ${CMAKE_VERSION} VERSION_GREATER 2.8.3 )
|
||||
SET( TOMAHAWK_ORGANIZATION_NAME "Tomahawk" )
|
||||
SET( TOMAHAWK_ORGANIZATION_DOMAIN "tomahawk-player.org" )
|
||||
SET( TOMAHAWK_APPLICATION_NAME "Tomahawk" )
|
||||
SET( TOMAHAWK_DESCRIPTION_SUMMARY "The social media player" )
|
||||
|
||||
SET( TOMAHAWK_VERSION_MAJOR 0 )
|
||||
SET( TOMAHAWK_VERSION_MINOR 2 )
|
||||
SET( TOMAHAWK_VERSION_PATCH 2 )
|
||||
|
||||
#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( TOMAHAWK_VERSION "0.1.0" )
|
||||
|
||||
|
||||
# set paths
|
||||
SET( CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/CMakeModules" )
|
||||
SET( THIRDPARTY_DIR ${CMAKE_SOURCE_DIR}/thirdparty )
|
||||
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
|
||||
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
|
||||
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
|
||||
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
|
||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
|
||||
|
||||
# installer creation
|
||||
INCLUDE( TomahawkCPack.cmake )
|
||||
# Check if we need qtgui:
|
||||
IF( "${gui}" STREQUAL "no" )
|
||||
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
|
||||
INCLUDE( MacroOptionalFindPackage )
|
||||
INCLUDE( MacroLogFeature )
|
||||
|
||||
# Check if we need qtgui:
|
||||
SET(NEEDED_QT4_COMPONENTS QtCore QtXml QtNetwork )
|
||||
IF( NOT BUILD_GUI )
|
||||
ADD_DEFINITIONS( -DENABLE_HEADLESS )
|
||||
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()
|
||||
# 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)
|
||||
|
||||
macro_optional_find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} )
|
||||
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")
|
||||
|
||||
macro_optional_find_package(Phonon 4.5.0)
|
||||
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")
|
||||
find_package(Phonon REQUIRED)
|
||||
if(PHONON_VERSION STRLESS "4.5.0")
|
||||
message(FATAL_ERROR "Phonon version 4.5.0 or higher is required, you have version ${PHONON_VERSION}")
|
||||
else()
|
||||
message(STATUS "Phonon found; ensure that phonon-vlc is at least 0.4")
|
||||
endif()
|
||||
|
||||
macro_optional_find_package(LibEchonest 1.1.7)
|
||||
@@ -92,20 +59,6 @@ macro_log_feature(QJSON_FOUND "QJson" "Qt library that maps JSON data to QVarian
|
||||
|
||||
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")
|
||||
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
|
||||
IF( INTERNAL_JREEN )
|
||||
@@ -118,7 +71,7 @@ IF( INTERNAL_JREEN )
|
||||
ELSE( INTERNAL_JREEN )
|
||||
macro_optional_find_package(Jreen)
|
||||
ENDIF( INTERNAL_JREEN )
|
||||
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")
|
||||
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")
|
||||
|
||||
# this installs headers and such and should really be handled in a separate package by packagers
|
||||
IF( INTERNAL_QTWEETLIB )
|
||||
@@ -142,16 +95,10 @@ SET( LIBPORTFWD_LIBRARIES ${LIBPORTFWD_LIBRARY} )
|
||||
ADD_SUBDIRECTORY( ${THIRDPARTY_DIR}/libportfwd )
|
||||
|
||||
# we need pthreads too
|
||||
macro_optional_find_package(Threads)
|
||||
macro_log_feature(THREADS_FOUND "Threads" "Threading Library" "" TRUE "" "Platform specific library for threading")
|
||||
find_package(Threads)
|
||||
|
||||
macro_optional_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)
|
||||
find_package(KDE4Installed)
|
||||
find_package(KDE4)
|
||||
IF(KDE4_FOUND)
|
||||
#KDE4 adds and removes some compiler flags that we don't like
|
||||
STRING( REPLACE "-std=iso9899:1990" "" CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
|
||||
@@ -160,6 +107,9 @@ ELSE()
|
||||
SET( CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
|
||||
ENDIF()
|
||||
|
||||
include( CheckTagLibFileName )
|
||||
check_taglib_filename( COMPLEX_TAGLIB_FILENAME )
|
||||
|
||||
IF( WIN32 )
|
||||
find_library(QTSPARKLE_LIBRARIES qtsparkle)
|
||||
ENDIF( WIN32 )
|
||||
|
@@ -1,5 +1,3 @@
|
||||
SET(WINDRES_EXECUTABLE ${CMAKE_RC_COMPILER})
|
||||
|
||||
# This macro is taken from kdelibs/cmake/modules/KDE4Macros.cmake.
|
||||
#
|
||||
# Copyright (c) 2006-2009 Alexander Neundorf, <neundorf@kde.org>
|
||||
|
@@ -1,23 +0,0 @@
|
||||
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()
|
@@ -1,45 +0,0 @@
|
||||
# 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,12 +12,9 @@
|
||||
INCLUDE(CheckSymbolExists)
|
||||
INCLUDE(FindLibraryWithDebug)
|
||||
|
||||
|
||||
IF(CLucene_FIND_VERSION)
|
||||
SET(CLUCENE_MIN_VERSION ${CLucene_FIND_VERSION})
|
||||
ELSEIF()
|
||||
SET(CLUCENE_MIN_VERSION "0.9.23")
|
||||
ENDIF(CLucene_FIND_VERSION)
|
||||
if(NOT CLUCENE_MIN_VERSION)
|
||||
set(CLUCENE_MIN_VERSION "0.9.23")
|
||||
endif(NOT CLUCENE_MIN_VERSION)
|
||||
|
||||
IF(EXISTS ${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)
|
||||
|
||||
_phonon_find_version()
|
||||
if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY AND NOT PHONON_VERSION VERSION_LESS ${Phonon_FIND_VERSION})
|
||||
if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
|
||||
set(PHONON_LIBS ${phonon_LIB_DEPENDS} ${PHONON_LIBRARY})
|
||||
set(PHONON_INCLUDES ${PHONON_INCLUDE_DIR}/KDE ${PHONON_INCLUDE_DIR})
|
||||
set(PHONON_FOUND TRUE)
|
||||
else(PHONON_INCLUDE_DIR AND PHONON_LIBRARY AND NOT PHONON_VERSION VERSION_LESS ${Phonon_FIND_VERSION})
|
||||
_phonon_find_version()
|
||||
else(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
|
||||
set(PHONON_FOUND FALSE)
|
||||
endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY AND NOT PHONON_VERSION VERSION_LESS ${Phonon_FIND_VERSION})
|
||||
endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
|
||||
|
||||
if(PHONON_FOUND)
|
||||
if(NOT PHONON_FIND_QUIETLY)
|
||||
|
@@ -1,24 +0,0 @@
|
||||
[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
|
@@ -1,77 +0,0 @@
|
||||
# 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@ )
|
98
ChangeLog
@@ -1,97 +1,22 @@
|
||||
Version 0.2.2:
|
||||
* Fixed crash when pressing previous and next when playing a song from the Queue.
|
||||
* Fixed issue where wrench for newly added resolvers would not show up immediately.
|
||||
* Fixed sidebar statistics not updating after collection scan finished.
|
||||
* Fixed omitting a few tracks in the Collection tree-view.
|
||||
* Fixed sidebar & track sorting issues.
|
||||
* Seek- & volume sliders now directly jump to the position you clicked on.
|
||||
* Added ability to drag artists and albums within Tomahawk (to playlists, queue, etc.).
|
||||
|
||||
Version 0.2.1:
|
||||
* Fixed crashing trying to play an unavailable track.
|
||||
* Fixed a crash caused by using Javascript resolvers.
|
||||
* Fixed searching with Javascript resolvers.
|
||||
|
||||
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:
|
||||
* Fixed stations so they resolve against all available sources instead of
|
||||
only local and friend's collections.
|
||||
* Add a Song seed for stations and automatic playlists, and allow dragging
|
||||
of any tracks to the New Stations entry to create a pre-seeded station.
|
||||
* Add a Song seed for stations and automatic playlists, and allow dragging 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
|
||||
playlist.
|
||||
* SOCKS5 proxy support. Noproxy hosts are also supported but no wildcard
|
||||
support (yet).
|
||||
* Support loading of - and exporting to - .xspf playlists.
|
||||
* Added Tomahawk:// protocol support and share links for many things
|
||||
including tracks, playlists, and stations.
|
||||
* Support loading of - and exporting to - .xspf playlists
|
||||
* Added Tomahawk:// protocol support and share links for many things including
|
||||
tracks, playlists, and stations.
|
||||
* Autoload automatically detected resolvers on startup.
|
||||
* Fix issue where track resolving spinner never stopped if tracks were
|
||||
removed from playlist while resolving.
|
||||
* Twitter & Jabber profile pictures are shown.
|
||||
* Fix issues with stations where multiple tracks could be added at once.
|
||||
* Allow multiple accounts of the same type.
|
||||
* Add new Google account type, a thin wrapper around a Jabber plugin.
|
||||
* Add new Google account type that is a thin wrapper around a Jabber plugin.
|
||||
* Overhaul the settings dialog interface.
|
||||
* Resolvers can now be enabled and disabled, and some can be configured
|
||||
directly in Tomahawk, for example the new Spotify resolver.
|
||||
@@ -99,21 +24,21 @@ Version 0.1.0:
|
||||
as a node under the Super Collection.
|
||||
* Fix massive speed bottleneck on startup in the case of many recently
|
||||
played playlists.
|
||||
* Removed filter and song view from Super Collection, coming back in the
|
||||
next release.
|
||||
* Removed filter and song view from Super Collection, coming back in the next
|
||||
release.
|
||||
* Browse and play collections in our snappy tree-mode, which also shows
|
||||
images for artists and albums.
|
||||
* Fixed crash that could occur when playing a track from a browser.
|
||||
* Fixed a crash caused by sources going on or offline.
|
||||
* 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
|
||||
of audio formats.
|
||||
* UI tweaks and cleanup.
|
||||
* (OS X) Open configuration dialogs as sliding sheets.
|
||||
* (OS X) Increase our available file watches to the maximum that the system
|
||||
reports.
|
||||
* (OS X) Added 'Window' menu with zoom/minimize actions.
|
||||
* (OS X) Added 'Window' menu with zoom/minimize actions
|
||||
|
||||
Version 0.0.3:
|
||||
* Show spinner while resolving playlists.
|
||||
@@ -132,9 +57,8 @@ Version 0.0.3:
|
||||
* Faster painting of playlists with lots of unresolved tracks.
|
||||
* Prefer local results when results' score is equal.
|
||||
* (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) Fixed launching Tomahawk from Windows installer with admin
|
||||
privileges.
|
||||
|
||||
Version 0.0.2:
|
||||
* Don't reconnect to Jabber if the settings dialog is closed successfully
|
||||
|
4
README
@@ -19,10 +19,6 @@ 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)
|
||||
|
||||
Doxygen Documentation
|
||||
---------------------
|
||||
See: http://dev.tomahawk-player.org/api/classes.html
|
||||
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
@@ -1,53 +0,0 @@
|
||||
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"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
@@ -23,42 +23,40 @@
|
||||
<key>CFBundleName</key>
|
||||
<string>Tomahawk</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.5.0</string>
|
||||
<key>SUFeedURL</key>
|
||||
<string>http://download.tomahawk-player.org/sparkle/update.php</string>
|
||||
<key>SUPublicDSAKeyFile</key>
|
||||
<string>sparkle_pub.pem</string>
|
||||
<key>SUEnableSystemProfiling</key>
|
||||
<true/>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>Tomahawk URL</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>tomahawk</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>xspf</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>Generic.icns</string>
|
||||
<key>CFBundleTypeMIMETypes</key>
|
||||
<array>
|
||||
<string>application/xspf+xml</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>XSPF Playlist</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Viewer</string>
|
||||
</dict>
|
||||
</array>
|
||||
<string>10.5.0</string>
|
||||
<key>SUFeedURL</key>
|
||||
<string>http://download.tomahawk-player.org/sparkle</string>
|
||||
<key>SUPublicDSAKeyFile</key>
|
||||
<string>sparkle_pub.pem</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>Tomahawk URL</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>tomahawk</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>xspf</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>Generic.icns</string>
|
||||
<key>CFBundleTypeMIMETypes</key>
|
||||
<array>
|
||||
<string>application/xspf+xml</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>XSPF Playlist</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Viewer</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
64
admin/mac/add-Qt-to-bundle.sh
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/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
|
16
admin/mac/add-spotify.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/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,28 +23,65 @@ then
|
||||
fi
|
||||
|
||||
ROOT=`pwd`
|
||||
VERSION=$1
|
||||
|
||||
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'
|
||||
################################################################################
|
||||
|
||||
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
|
||||
CLEAN='1'
|
||||
BUILD='1'
|
||||
NOTQUICK='1'
|
||||
CREATEDMG='1'
|
||||
VERSION=$1
|
||||
|
||||
cd Tomahawk.app
|
||||
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 icon"
|
||||
header "Renaming files"
|
||||
mv Contents/Resources/tomahawkSources.icns Contents/Resources/Tomahawk.icns
|
||||
cp $ROOT/../admin/mac/qt.conf Contents/Resources/qt.conf
|
||||
mv Contents/MacOS/tomahawk Contents/MacOS/Tomahawk
|
||||
# cp $ROOT/../admin/mac/Info.plist Contents/Info.plist
|
||||
|
||||
header "Copying Sparkle framework"
|
||||
header "Copying VLC plugins into bundle"
|
||||
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 $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"
|
||||
cd ..
|
||||
|
||||
mv tomahawk.app Tomahawk.app
|
||||
$ROOT/../admin/mac/create-dmg.sh Tomahawk.app
|
||||
mv Tomahawk.dmg Tomahawk-$VERSION.dmg
|
||||
|
||||
|
164
admin/mac/deposx.sh
Executable file
@@ -0,0 +1,164 @@
|
||||
#!/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
|
@@ -1,517 +0,0 @@
|
||||
#!/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]
|
||||
Plugins = PlugIns
|
||||
Plugins = plugins
|
||||
|
@@ -1,27 +1,20 @@
|
||||
SET(MINGW_PREFIX "i686-w64-mingw32")
|
||||
|
||||
# this one is important
|
||||
SET(CMAKE_SYSTEM_NAME Windows)
|
||||
|
||||
# specify the cross compiler
|
||||
SET(CMAKE_C_COMPILER ccache ${MINGW_PREFIX}-gcc)
|
||||
SET(CMAKE_CXX_COMPILER ccache ${MINGW_PREFIX}-g++)
|
||||
SET(CMAKE_RC_COMPILER /usr/bin/${MINGW_PREFIX}-windres)
|
||||
SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
|
||||
SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
|
||||
|
||||
# where is the target environment containing libraries
|
||||
SET(CMAKE_FIND_ROOT_PATH /usr/${MINGW_PREFIX}/sys-root/mingw)
|
||||
SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32/sys-root/mingw)
|
||||
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
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
|
||||
SET(TAGLIB_FOUND true)
|
||||
SET(TAGLIB_LIBRARIES ${CMAKE_FIND_ROOT_PATH}/lib/libtag.dll.a)
|
||||
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
admin/win/nsi/revision.txt
Normal file
@@ -0,0 +1 @@
|
||||
105
|
@@ -20,54 +20,53 @@
|
||||
!endif
|
||||
!define MING_BIN "${MING_PATH}/bin"
|
||||
!define MING_LIB "${MING_PATH}/lib"
|
||||
!define BUILD_PATH "@CMAKE_BINARY_DIR@"
|
||||
!define SOURCE_PATH "@CMAKE_SOURCE_DIR@"
|
||||
!define ROOT_PATH "..\..\.." ; assuming the script is in ROOT/admin/win/nsi
|
||||
!define BUILD_PATH "${ROOT_PATH}\build"
|
||||
!define QT_DLL_PATH "${MING_BIN}"
|
||||
!define SQLITE_DLL_PATH "${MING_LIB}/qt4/plugins/sqldrivers"
|
||||
!define IMAGEFORMATS_DLL_PATH "${MING_LIB}/qt4/plugins/imageformats"
|
||||
|
||||
; 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"
|
||||
!define VLC_PATH "${ROOT_PATH}\..\vlc"
|
||||
!define VLC_PLUGIN_PATH "${VLC_PATH}\plugins"
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Installer version
|
||||
; Increment installer revision number as part of this script.
|
||||
;-----------------------------------------------------------------------------
|
||||
!define /file REVISION_LAST revision.txt
|
||||
!define /math REVISION ${REVISION_LAST} + 1
|
||||
!delfile revision.txt
|
||||
!appendfile revision.txt ${REVISION}
|
||||
|
||||
!define VER_MAJOR "@CPACK_PACKAGE_VERSION_MAJOR@"
|
||||
!define VER_MINOR "@CPACK_PACKAGE_VERSION_MINOR@"
|
||||
!define VER_BUILD "@CPACK_PACKAGE_VERSION_PATCH@"
|
||||
!define VERSION "@CPACK_PACKAGE_VERSION@"
|
||||
!ifndef VER_MAJOR && VER_MINOR && VER_BUILD
|
||||
!define VER_MAJOR "0"
|
||||
!define VER_MINOR "1"
|
||||
!define VER_BUILD "0rc2"
|
||||
!endif
|
||||
|
||||
!define VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}"
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Installer build timestamp.
|
||||
;-----------------------------------------------------------------------------
|
||||
!define /date BUILD_TIME "built on %Y/%m/%d at %I:%M %p"
|
||||
!define /date BUILD_TIME "built on %Y/%m/%d at %I:%M %p (rev. ${REVISION})"
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Initial installer setup and definitions.
|
||||
;-----------------------------------------------------------------------------
|
||||
Name "@CPACK_NSIS_PACKAGE_NAME@"
|
||||
Name "Tomahawk"
|
||||
Caption "Tomahawk Installer"
|
||||
BrandingText "Tomahawk ${VERSION} -- ${BUILD_TIME}"
|
||||
OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
|
||||
InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
|
||||
OutFile "tomahawk-${VERSION}.exe"
|
||||
InstallDir "$PROGRAMFILES\Tomahawk"
|
||||
InstallDirRegKey HKCU "Software\Tomahawk" ""
|
||||
InstType Standard
|
||||
InstType Full
|
||||
InstType Minimal
|
||||
CRCCheck On
|
||||
SetCompressor @CPACK_NSIS_COMPRESSOR@
|
||||
SetCompressor /SOLID lzma
|
||||
RequestExecutionLevel user ;Now using the UAC plugin.
|
||||
ReserveFile NSIS.InstallOptions.ini
|
||||
ReserveFile tomahawk.ini
|
||||
ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
|
||||
|
||||
@CPACK_NSIS_SECTION_SELECTED_VARS@
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Include some required header files.
|
||||
;-----------------------------------------------------------------------------
|
||||
@@ -90,17 +89,17 @@ ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
|
||||
; Modern User Interface (MUI) defintions and setup.
|
||||
;-----------------------------------------------------------------------------
|
||||
!define MUI_ABORTWARNING
|
||||
!define MUI_ICON ${NSI_PATH}\installer.ico
|
||||
!define MUI_UNICON ${NSI_PATH}\installer.ico
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP ${NSI_PATH}\welcome.bmp
|
||||
!define MUI_WELCOMEPAGE_TITLE "@CPACK_PACKAGE_NAME@ ${VERSION} Setup$\r$\nInstaller"
|
||||
!define MUI_ICON installer.ico
|
||||
!define MUI_UNICON installer.ico
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP welcome.bmp
|
||||
!define MUI_WELCOMEPAGE_TITLE "Tomahawk ${VERSION} Setup$\r$\nInstaller Build Revision ${REVISION}"
|
||||
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation.$\r$\n$\r$\n$_CLICK"
|
||||
!define MUI_HEADERIMAGE
|
||||
!define MUI_HEADERIMAGE_BITMAP ${NSI_PATH}\page_header.bmp
|
||||
!define MUI_HEADERIMAGE_BITMAP page_header.bmp
|
||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||
!define MUI_FINISHPAGE_TITLE "@CPACK_PACKAGE_NAME@ Install Completed"
|
||||
!define MUI_FINISHPAGE_LINK "Click here to visit the @CPACK_PACKAGE_NAME@ website."
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "http://@TOMAHAWK_ORGANIZATION_DOMAIN@"
|
||||
!define MUI_FINISHPAGE_TITLE "Tomahawk Install Completed"
|
||||
!define MUI_FINISHPAGE_LINK "Click here to visit the Tomahawk website."
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "http://tomahawk-player.org/"
|
||||
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
|
||||
!ifdef OPTION_FINISHPAGE_RELEASE_NOTES
|
||||
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
|
||||
@@ -203,37 +202,40 @@ Function PageReinstall
|
||||
IntCmp $R0 ${VER_MINOR} build_check new_version older_version
|
||||
build_check:
|
||||
ReadRegDWORD $R0 HKLM "Software\Tomahawk" "VersionBuild"
|
||||
IntCmp $R0 ${VER_BUILD} same_version new_version older_version
|
||||
IntCmp $R0 ${VER_BUILD} revision_check new_version older_version
|
||||
revision_check:
|
||||
ReadRegDWORD $R0 HKLM "Software\Tomahawk" "VersionRevision"
|
||||
IntCmp $R0 ${REVISION} same_version new_version older_version
|
||||
|
||||
new_version:
|
||||
!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 "NSIS.InstallOptions.ini" "Field 2" "Text" "Uninstall before installing"
|
||||
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" "Do not uninstall"
|
||||
!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 "tomahawk.ini" "Field 2" "Text" "Uninstall before installing"
|
||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 3" "Text" "Do not uninstall"
|
||||
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install Tomahawk."
|
||||
StrCpy $R0 "1"
|
||||
Goto reinst_start
|
||||
|
||||
older_version:
|
||||
!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 "NSIS.InstallOptions.ini" "Field 2" "Text" "Uninstall before installing"
|
||||
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" "Do not uninstall"
|
||||
!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 "tomahawk.ini" "Field 2" "Text" "Uninstall before installing"
|
||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 3" "Text" "Do not uninstall"
|
||||
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install Tomahawk."
|
||||
StrCpy $R0 "1"
|
||||
Goto reinst_start
|
||||
|
||||
same_version:
|
||||
!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 "NSIS.InstallOptions.ini" "Field 2" "Text" "Add/Reinstall components"
|
||||
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" "Uninstall Tomahawk"
|
||||
!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 "tomahawk.ini" "Field 2" "Text" "Add/Reinstall components"
|
||||
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 3" "Text" "Uninstall Tomahawk"
|
||||
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
|
||||
StrCpy $R0 "2"
|
||||
|
||||
reinst_start:
|
||||
!insertmacro INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini"
|
||||
!insertmacro INSTALLOPTIONS_DISPLAY "tomahawk.ini"
|
||||
FunctionEnd
|
||||
|
||||
Function PageLeaveReinstall
|
||||
!insertmacro INSTALLOPTIONS_READ $R1 "NSIS.InstallOptions.ini" "Field 2" "State"
|
||||
!insertmacro INSTALLOPTIONS_READ $R1 "tomahawk.ini" "Field 2" "State"
|
||||
StrCmp $R0 "1" 0 +2
|
||||
StrCmp $R1 "1" reinst_uninstall reinst_done
|
||||
StrCmp $R0 "2" 0 +3
|
||||
@@ -260,6 +262,7 @@ FunctionEnd
|
||||
# INSTALLER SECTIONS #
|
||||
# #
|
||||
##############################################################################
|
||||
|
||||
Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
|
||||
SectionIn 1 2 3 RO
|
||||
SetDetailsPrint listonly
|
||||
@@ -291,8 +294,8 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
|
||||
!endif
|
||||
|
||||
;License & release notes.
|
||||
File "@CPACK_RESOURCE_FILE_LICENSE@"
|
||||
File /oname=NOTES.txt ${NSI_PATH}\RELEASE_NOTES.txt
|
||||
File "${ROOT_PATH}\LICENSE.txt"
|
||||
File /oname=NOTES.txt RELEASE_NOTES.txt
|
||||
|
||||
;QT stuff:
|
||||
File "${QT_DLL_PATH}\QtCore4.dll"
|
||||
@@ -327,15 +330,15 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
|
||||
File "${MING_BIN}\libdbus-1-3.dll"
|
||||
File "${MING_BIN}\dbus-daemon.exe"
|
||||
|
||||
File "${VLC_BIN}\libphonon.dll"
|
||||
File "${MING_BIN}\libphonon.dll"
|
||||
SetOutPath "$INSTDIR\phonon_backend"
|
||||
File "${VLC_BIN}\phonon_backend\phonon_vlc.dll"
|
||||
File "${MING_BIN}\phonon_backend\phonon_vlc.dll"
|
||||
SetOutPath "$INSTDIR"
|
||||
|
||||
;VLC
|
||||
;SetOutPath "$INSTDIR\phonon_backend"
|
||||
File "${VLC_BIN}\libvlc.dll"
|
||||
File "${VLC_BIN}\libvlccore.dll"
|
||||
File "${VLC_PATH}\libvlc.dll"
|
||||
File "${VLC_PATH}\libvlccore.dll"
|
||||
SetOutPath "$INSTDIR\plugins"
|
||||
File /r "${VLC_PLUGIN_PATH}\*.dll"
|
||||
SetOutPath "$INSTDIR"
|
||||
@@ -563,7 +566,7 @@ SectionEnd
|
||||
##############################################################################
|
||||
|
||||
Function .onInit
|
||||
!insertmacro INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
|
||||
!insertmacro INSTALLOPTIONS_EXTRACT "tomahawk.ini"
|
||||
|
||||
;Remove Quick Launch option from Windows 7, as no longer applicable - usually.
|
||||
${IfNot} ${AtMostWinVista}
|
@@ -1,49 +1,20 @@
|
||||
#!/bin/bash
|
||||
echo "Remove old vlc dir..."
|
||||
|
||||
mkdir -p vlc/
|
||||
cd vlc/
|
||||
|
||||
#rm -vf vlc-*.7z
|
||||
#rm -rf vlc/
|
||||
rm -rf vlc/
|
||||
|
||||
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://download.tomahawk-player.org/tomahawk-vlc-0.1.zip"
|
||||
wget -c http://people.videolan.org/~jb/phonon/phonon-vlc-last.7z
|
||||
wget -c "http://nightlies.videolan.org/build/win32/trunk-20110524-1321/vlc-1.2.0-git-20110524-1321-win32.7z"
|
||||
|
||||
echo "Extract binary..."
|
||||
7z x phonon-vlc-last.7z
|
||||
#mv -v vlc-*/ vlc/
|
||||
#unzip tomahawk-vlc-0.1.zip
|
||||
7z x vlc-*.7z
|
||||
mv -v vlc-*/ vlc/
|
||||
|
||||
echo "Strip unneeded plugins from vlc/plugins..."
|
||||
cd prefix/bin/plugins
|
||||
rm -rvf libold* libvcd* libdvd* liblibass* libx264* libschroe* liblibmpeg2* \
|
||||
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/
|
||||
|
||||
cd vlc/plugins/
|
||||
rm -rvf video_*/ gui/ */libold* */libvcd* */libdvd* */liblibass* */libx264* */libschroe* */liblibmpeg2* \
|
||||
*/libstream_out_* */libmjpeg_plugin* */libh264_plugin* */libzvbi_plugin* */lib*sub*
|
||||
|
||||
echo "Downloaded and stripped VLC"
|
||||
|
||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 643 B |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 856 B |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 4.4 KiB |
BIN
data/images/add-friend-button-pressed.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
data/images/add-friend-button-rest.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 204 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 691 B |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 666 B |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 650 B |
Before Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 260 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 717 B |
Before Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 260 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 564 B |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 332 B |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 1.0 MiB |
BIN
data/images/magnifying-glass.png
Normal file
After Width: | Height: | Size: 352 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 500 B |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 5.9 KiB |
BIN
data/images/search-box.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 771 B |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 325 B |
BIN
data/images/source-info.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
data/images/source-off-pressed.png
Normal file
After Width: | Height: | Size: 844 B |
BIN
data/images/source-off-rest.png
Normal file
After Width: | Height: | Size: 858 B |
BIN
data/images/source-on-pressed.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
data/images/source-on-rest.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 563 KiB |
BIN
data/images/status-alert-icon.png
Normal file
After Width: | Height: | Size: 589 B |
BIN
data/images/status-bar-bkg.png
Normal file
After Width: | Height: | Size: 301 B |
BIN
data/images/status-dismiss-x.png
Normal file
After Width: | Height: | Size: 530 B |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 931 B |
@@ -1,320 +0,0 @@
|
||||
|
||||
// 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;
|
@@ -1,22 +0,0 @@
|
||||
-- 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';
|
@@ -1,17 +0,0 @@
|
||||
-- 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';
|
@@ -1,8 +0,0 @@
|
||||
-- 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>
|
||||
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
||||
<source>Name</source>
|
||||
<translation>Name</translation>
|
||||
<translation type="unfinished">Name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
||||
<source>Tracks</source>
|
||||
<translation>Stücke</translation>
|
||||
<translation type="unfinished">Stücke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
||||
<source>Duration</source>
|
||||
<translation>Spieldauer</translation>
|
||||
<translation type="unfinished">Spieldauer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
|
||||
<source>Origin</source>
|
||||
<translation>Quelle</translation>
|
||||
<translation type="unfinished">Quelle</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -142,17 +142,17 @@
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="75"/>
|
||||
<source>&Play</source>
|
||||
<translation>&Abspielen</translation>
|
||||
<translation type="unfinished">&Abspielen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="76"/>
|
||||
<source>Add to &Queue</source>
|
||||
<translation>In &Warteschlange einreihen</translation>
|
||||
<translation type="unfinished">Zur &Warteschlange hinzufügen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="108"/>
|
||||
<source>This collection is empty.</source>
|
||||
<translation>Diese Sammlung ist leer.</translation>
|
||||
<translation type="unfinished">Diese Sammlung ist leer.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -175,19 +175,19 @@
|
||||
<message>
|
||||
<location filename="src/sip/jabber/jabber.cpp" line="124"/>
|
||||
<source>Add Friend...</source>
|
||||
<translation>Freund hinzufügen…</translation>
|
||||
<translation type="unfinished">Freund hinzufügen…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/sip/jabber/jabber.cpp" line="169"/>
|
||||
<location filename="src/sip/jreen/jabber.cpp" line="183"/>
|
||||
<source>Add Friend</source>
|
||||
<translation>Freund hinzufügen</translation>
|
||||
<translation type="unfinished">Freund hinzufügen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/sip/jabber/jabber.cpp" line="170"/>
|
||||
<location filename="src/sip/jreen/jabber.cpp" line="184"/>
|
||||
<source>Enter Jabber ID:</source>
|
||||
<translation>Jabber-ID eingeben:</translation>
|
||||
<translation type="unfinished">Jabber-ID eingeben:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -208,27 +208,27 @@
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/newplaylistwidget.ui" line="22"/>
|
||||
<source>Enter a title for the new playlist:</source>
|
||||
<translation>Gib einen Titel für die neue Playliste ein:</translation>
|
||||
<translation type="unfinished">Gib einen Titel für die neue Playliste ein:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Tomahawk bietet verschiedene Wege, Playlisten zu erstellen und Musik zu finden, die du magst!</translation>
|
||||
<translation type="unfinished">Tomahawk bietet verschiedene Wege, Playlisten zu erstellen und Musik zu finden, die du magst!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/newplaylistwidget.cpp" line="45"/>
|
||||
<source>&Create Playlist</source>
|
||||
<translation>Playliste &erstellen</translation>
|
||||
<translation type="unfinished">Playliste &erstellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/newplaylistwidget.h" line="51"/>
|
||||
<source>Create a new playlist</source>
|
||||
<translation>Erstelle eine neue Playliste</translation>
|
||||
<translation type="unfinished">Erstelle eine neue Playliste</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -270,27 +270,27 @@
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="74"/>
|
||||
<source>&Play</source>
|
||||
<translation>&Abspielen</translation>
|
||||
<translation type="unfinished">&Abspielen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="75"/>
|
||||
<source>Add to &Queue</source>
|
||||
<translation>In &Warteschlange einreihen</translation>
|
||||
<translation type="unfinished">In &Warteschlange einreihen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="79"/>
|
||||
<source>&Delete Items</source>
|
||||
<translation>Elemente &entfernen</translation>
|
||||
<translation type="unfinished">Elemente &entfernen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="79"/>
|
||||
<source>&Delete Item</source>
|
||||
<translation>Element &entfernen</translation>
|
||||
<translation type="unfinished">Element &entfernen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Die Playliste ist derzeit leer. Füge einige Stücke hinzu und genieße die Musik!</translation>
|
||||
<translation type="unfinished">Die Playliste ist derzeit leer. Füge einige Stücke hinzu und genieße die Musik!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -359,18 +359,18 @@
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="30"/>
|
||||
<source>Jabber</source>
|
||||
<translation>Jabber</translation>
|
||||
<translation type="unfinished">Jabber</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="53"/>
|
||||
<source>Jabber ID:</source>
|
||||
<translation>Jabber-ID:</translation>
|
||||
<translation type="unfinished">Jabber-ID:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="79"/>
|
||||
<location filename="src/settingsdialog.ui" line="524"/>
|
||||
<source>Password:</source>
|
||||
<translation>Passwort:</translation>
|
||||
<translation type="unfinished">Passwort:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="132"/>
|
||||
@@ -380,138 +380,138 @@
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="152"/>
|
||||
<source>Server:</source>
|
||||
<translation>Server:</translation>
|
||||
<translation type="unfinished">Server:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="175"/>
|
||||
<source>Port:</source>
|
||||
<translation>Port:</translation>
|
||||
<translation type="unfinished">Port:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="238"/>
|
||||
<source>Network</source>
|
||||
<translation>Netzwerk</translation>
|
||||
<translation type="unfinished">Netzwerk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="250"/>
|
||||
<source>Advanced Network Settings</source>
|
||||
<translation>Erweiterte Netzwerkeinstellungen</translation>
|
||||
<translation type="unfinished">Erweiterte Netzwerkeinstellungen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="285"/>
|
||||
<source>Static Host Name:</source>
|
||||
<translation>Statischer Rechnername:</translation>
|
||||
<translation type="unfinished">Statischer Rechnername:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="301"/>
|
||||
<source>Static Port:</source>
|
||||
<translation>Statischer Port:</translation>
|
||||
<translation type="unfinished">Statischer Port:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="323"/>
|
||||
<source>Always use static host name/port? (Overrides UPnP discovery/port forwarding)</source>
|
||||
<translation>Statischen Rechnernamen/Port immer benutzen? (Überschreibt UPnP-discovery/Portweiterleitung)</translation>
|
||||
<translation type="unfinished">Statischen Rechnernamen/Port immer benutzen? (Überschreibt UPnP-discovery/Portweiterleitung)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="347"/>
|
||||
<source>Proxy Settings...</source>
|
||||
<translation>Proxy-Einstellungen…</translation>
|
||||
<translation type="unfinished">Proxy-Einstellungen…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="385"/>
|
||||
<source>Playdar HTTP API</source>
|
||||
<translation>Playdar HTTP API</translation>
|
||||
<translation type="unfinished">Playdar HTTP API</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="398"/>
|
||||
<source>Connect automatically when Tomahawk starts</source>
|
||||
<translation>Automatisch beim Start von Tomahawk verbinden</translation>
|
||||
<translation type="unfinished">Automatisch beim Start von Tomahawk verbinden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="411"/>
|
||||
<source>Use UPnP to establish port forward</source>
|
||||
<translation>Benutze UPnP um die Portweiterleitung einzurichten</translation>
|
||||
<translation type="unfinished">Benutze UPnP um die Portweiterleitung zu konfigurieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="425"/>
|
||||
<source>Local Music</source>
|
||||
<translation>Lokale Musik</translation>
|
||||
<translation type="unfinished">Lokale Musik</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="436"/>
|
||||
<source>Path to scan for music files:</source>
|
||||
<translation>Pfad zu den Musikdateien:</translation>
|
||||
<translation type="unfinished">Pfad zu den Musikdateien:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="448"/>
|
||||
<source>...</source>
|
||||
<translation>…</translation>
|
||||
<translation type="unfinished">…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="490"/>
|
||||
<source>Last.fm</source>
|
||||
<translation>Last.fm</translation>
|
||||
<translation type="unfinished">Last.fm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="499"/>
|
||||
<source>Scrobble tracks to Last.fm</source>
|
||||
<translation>Gespielte Stücke an Last.fm übertragen</translation>
|
||||
<translation type="unfinished">Gespielte Stücke an Last.fm übertragen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="506"/>
|
||||
<source>Last.fm Login</source>
|
||||
<translation>Last.fm Anmeldung</translation>
|
||||
<translation type="unfinished">Last.fm Anmeldung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="514"/>
|
||||
<source>Username:</source>
|
||||
<translation>Benutzername:</translation>
|
||||
<translation type="unfinished">Benutzername:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="540"/>
|
||||
<source>Test Login</source>
|
||||
<translation>Anmeldung testen</translation>
|
||||
<translation type="unfinished">Anmeldung Testen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="564"/>
|
||||
<source>Script Resolvers</source>
|
||||
<translation>Script Resolver</translation>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.ui" line="570"/>
|
||||
<source>Loaded script resolvers:</source>
|
||||
<translation>Geladene Script Resolver:</translation>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.cpp" line="163"/>
|
||||
<source>Select Music Folder</source>
|
||||
<translation>Musikordner auswählen</translation>
|
||||
<translation type="unfinished">Musikordner auswählen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.cpp" line="250"/>
|
||||
<location filename="src/settingsdialog.cpp" line="262"/>
|
||||
<source>Failed</source>
|
||||
<translation>Fehlgeschlagen</translation>
|
||||
<translation type="unfinished">Fehlgeschlagen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.cpp" line="255"/>
|
||||
<source>Success</source>
|
||||
<translation>Erfolgreich</translation>
|
||||
<translation type="unfinished">Erfolgreich</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.cpp" line="268"/>
|
||||
<source>Could not contact server</source>
|
||||
<translation>Konnte den Server nicht erreichen</translation>
|
||||
<translation type="unfinished">Konnte den Server nicht erreichen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/settingsdialog.cpp" line="338"/>
|
||||
<source>Load script resolver file</source>
|
||||
<translation>Script Resolver laden</translation>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -519,17 +519,17 @@
|
||||
<message>
|
||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="558"/>
|
||||
<source>Offline</source>
|
||||
<translation>Nicht Verbunden</translation>
|
||||
<translation type="unfinished">Nicht Verbunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="560"/>
|
||||
<source>All available tracks</source>
|
||||
<translation>Alle verfügbaren Stücke</translation>
|
||||
<translation type="unfinished">Alle verfügbaren Stücke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="564"/>
|
||||
<source>Online</source>
|
||||
<translation>Verbunden</translation>
|
||||
<translation type="unfinished">Verbunden</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -537,27 +537,27 @@
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="26"/>
|
||||
<source>Recent Albums</source>
|
||||
<translation>Aktuelle Alben</translation>
|
||||
<translation type="unfinished">Aktuelle Alben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="68"/>
|
||||
<source>Latest Additions to their Collection</source>
|
||||
<translation>Zuletzt zur Sammlung hinzugefügt</translation>
|
||||
<translation type="unfinished">Zuletzt zur Sammlung hinzugefügte Stücke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="89"/>
|
||||
<source>Recently played Tracks</source>
|
||||
<translation>Zuletzt gespiele Stücke</translation>
|
||||
<translation type="unfinished">Aktuell gespiele Stücke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.cpp" line="65"/>
|
||||
<source>Info about %1</source>
|
||||
<translation>Information über %1</translation>
|
||||
<translation type="unfinished">Information über %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.cpp" line="65"/>
|
||||
<source>Your Collection</source>
|
||||
<translation>Deine Sammlung</translation>
|
||||
<translation type="unfinished">Deine Sammlung</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -654,17 +654,17 @@
|
||||
<message>
|
||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="125"/>
|
||||
<source>&Load Playlist</source>
|
||||
<translation>&Lade Playliste</translation>
|
||||
<translation type="unfinished">&Lade Playliste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="126"/>
|
||||
<source>&Rename Playlist</source>
|
||||
<translation>Playliste &umbenennen</translation>
|
||||
<translation type="unfinished">Playliste &umbenennen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/sourcetree/sourcetreeview.cpp" line="128"/>
|
||||
<source>&Delete Playlist</source>
|
||||
<translation>Playliste &löschen</translation>
|
||||
<translation type="unfinished">Playliste &löschen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -698,7 +698,7 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/dynamic/widgets/DynamicSetupWidget.cpp" line="62"/>
|
||||
<source>Generate</source>
|
||||
<translation>Erzeugen</translation>
|
||||
<translation type="unfinished">Erzeugen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -706,17 +706,17 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="135"/>
|
||||
<source>Add some filters above to seed this station!</source>
|
||||
<translation>Füge einige Filter hinzu, um diese Station zu starten!</translation>
|
||||
<translation type="unfinished">Füge einige Filter hinzu, um diese Station zu initialisieren!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="140"/>
|
||||
<source>Press Generate to get started!</source>
|
||||
<translation>Drücke Erzeugen, und los geht's!</translation>
|
||||
<translation type="unfinished">Drücke Erzeugen, um zu beginnen!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="142"/>
|
||||
<source>Add some filters above, and press Generate to get started!</source>
|
||||
<translation>Füge oben einige Filter hinzu und drücke Erzeugen um loszulegen!</translation>
|
||||
<translation type="unfinished">Füge oben einige Filter hinzu und drücke Erzeugen um zu beginnen!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1091,53 +1091,53 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="14"/>
|
||||
<source>Tomahawk</source>
|
||||
<translation>Tomahawk</translation>
|
||||
<translation type="unfinished">Tomahawk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="43"/>
|
||||
<source>&Settings</source>
|
||||
<translation>&Einstellungen</translation>
|
||||
<translation type="unfinished">&Einstellungen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="49"/>
|
||||
<source>&Music Player</source>
|
||||
<translation>&Music Player</translation>
|
||||
<translation type="unfinished">&Abspielprogramm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="60"/>
|
||||
<source>&Playlist</source>
|
||||
<translation>&Playliste</translation>
|
||||
<translation type="unfinished">&Playliste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="70"/>
|
||||
<source>&Network</source>
|
||||
<translation>&Netzwerk</translation>
|
||||
<translation type="unfinished">&Netzwerk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="77"/>
|
||||
<source>&Help</source>
|
||||
<translation>&Hilfe</translation>
|
||||
<translation type="unfinished">&Hilfe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="90"/>
|
||||
<source>&Quit</source>
|
||||
<translation>&Verlassen</translation>
|
||||
<translation type="unfinished">&Verlassen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="93"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation>Ctrl+Q</translation>
|
||||
<translation type="unfinished">Strg+Q</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="101"/>
|
||||
<location filename="src/tomahawkwindow.cpp" line="471"/>
|
||||
<source>Go &online</source>
|
||||
<translation>&Verbindung herstellen</translation>
|
||||
<translation type="unfinished">&Verbindung herstellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="106"/>
|
||||
<source>Add &Friend...</source>
|
||||
<translation>Freund &hinzufügen…</translation>
|
||||
<translation type="unfinished">Freund &hinzufügen…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="111"/>
|
||||
@@ -1147,58 +1147,58 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="116"/>
|
||||
<source>&Configure Tomahawk...</source>
|
||||
<translation>Tomahawk &einrichten…</translation>
|
||||
<translation type="unfinished">Tomahawk &einrichten…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="124"/>
|
||||
<source>Load &XSPF...</source>
|
||||
<translation>&XSPF laden…</translation>
|
||||
<translation type="unfinished">&XSPF-Datei laden…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="129"/>
|
||||
<source>Create &New Playlist...</source>
|
||||
<translation>Neue &Playliste erstellen…</translation>
|
||||
<translation type="unfinished">Neue &Playliste erstellen…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="134"/>
|
||||
<source>About &Tomahawk...</source>
|
||||
<translation>Über &Tomahawk…</translation>
|
||||
<translation type="unfinished">Über &Tomahawk…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="142"/>
|
||||
<source>Create New &Automatic Playlist</source>
|
||||
<translation>Neue &automatische Playliste erstellen</translation>
|
||||
<translation type="unfinished">Neue, &automatische Playliste erstellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="147"/>
|
||||
<source>Create New &Station</source>
|
||||
<translation>Neue &Station erstellen</translation>
|
||||
<translation type="unfinished">Neue &Station erstellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="152"/>
|
||||
<source>Show Offline Sources</source>
|
||||
<translation>Nicht-Verfügbare Quellen anzeigen</translation>
|
||||
<translation type="unfinished">Nicht-Verfügbare Quellen anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.ui" line="157"/>
|
||||
<source>Hide Offline Sources</source>
|
||||
<translation>Nicht-Verfügbare Quellen ausblenden</translation>
|
||||
<translation type="unfinished">Nicht-Verfügbare Quellen ausblenden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.cpp" line="150"/>
|
||||
<location filename="src/tomahawkwindow.cpp" line="166"/>
|
||||
<source>Check for updates...</source>
|
||||
<translation type="unfinished">Suche nach Updates…</translation>
|
||||
<translation type="unfinished">Teste auf updates…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.cpp" line="170"/>
|
||||
<source>Back</source>
|
||||
<translation>Zurück</translation>
|
||||
<translation type="unfinished">Zurück</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.cpp" line="171"/>
|
||||
<source>Forward</source>
|
||||
<translation>Vorwärts</translation>
|
||||
<translation type="unfinished">Forwärts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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="347"/>
|
||||
<source>Connect To Peer</source>
|
||||
<translation>Zu Gegenstelle verbinden</translation>
|
||||
<translation type="unfinished">Zu Gegenstelle verbinden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.cpp" line="333"/>
|
||||
<source>Enter peer address:</source>
|
||||
<translation>Gib die Adresse der Gegenstelle ein:</translation>
|
||||
<translation type="unfinished">Gib die Adresse der Gegenstelle ein:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.cpp" line="340"/>
|
||||
<source>Enter peer port:</source>
|
||||
<translation>Gib den Port der Gegenstelle ein:</translation>
|
||||
<translation type="unfinished">Gib den Port der Gegenstelle ein:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.cpp" line="348"/>
|
||||
<source>Enter peer key:</source>
|
||||
<translation>Gib den Schlüssel der Gegenstelle ein:</translation>
|
||||
<translation type="unfinished">Gib den Schlüssel der Gegenstelle ein:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.cpp" line="464"/>
|
||||
<source>Go &offline</source>
|
||||
<translation>Verbindung &trennen</translation>
|
||||
<translation type="unfinished">Verbindung &trennen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.cpp" line="481"/>
|
||||
<source>Authentication Error</source>
|
||||
<translation>Authentifizierungsfehler</translation>
|
||||
<translation type="unfinished">Authentifizierungsfehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.cpp" line="496"/>
|
||||
<source>by</source>
|
||||
<translation>von</translation>
|
||||
<translation type="unfinished">von</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/tomahawkwindow.cpp" line="506"/>
|
||||
@@ -1357,17 +1357,17 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
|
||||
<message>
|
||||
<location filename="src/transferview.cpp" line="46"/>
|
||||
<source>Peer</source>
|
||||
<translation>Gegenstelle</translation>
|
||||
<translation type="unfinished">Gegenstelle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/transferview.cpp" line="46"/>
|
||||
<source>Rate</source>
|
||||
<translation>Rate</translation>
|
||||
<translation type="unfinished">Rate</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/transferview.cpp" line="46"/>
|
||||
<source>Track</source>
|
||||
<translation>Stück</translation>
|
||||
<translation type="unfinished">Stück</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1435,22 +1435,22 @@ If connections to peers seem to have been lost, just press the appropriate butto
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/welcomewidget.ui" line="22"/>
|
||||
<source>Recently played playlists:</source>
|
||||
<translation>Zuletzt gespielte Playlisten:</translation>
|
||||
<translation type="unfinished">Aktuell gespielte Playlisten:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/welcomewidget.ui" line="37"/>
|
||||
<source>Recently played tracks:</source>
|
||||
<translation>Zuletzt gespielte Stücke:</translation>
|
||||
<translation type="unfinished">Aktuell gespielte Stücke:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/welcomewidget.cpp" line="81"/>
|
||||
<source>You have not played any playlists yet.</source>
|
||||
<translation>Du hast bisher keine Playlisten abgespielt.</translation>
|
||||
<translation type="unfinished">Du hast bisher keine Playlisten abgespielt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/libtomahawk/widgets/welcomewidget.h" line="106"/>
|
||||
<source>Welcome to Tomahawk</source>
|
||||
<translation>Willkommen bei Tomahawk</translation>
|
||||
<translation type="unfinished">Willkommen bei Tomahawk</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
212
resources.qrc
@@ -1,110 +1,106 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>data/images/avatar-dude-plus.png</file>
|
||||
<file>data/images/avatar-dude.png</file>
|
||||
<file>data/images/back-pressed.png</file>
|
||||
<file>data/images/back-rest.png</file>
|
||||
<file>data/images/cover-shadow.png</file>
|
||||
<file>data/images/filter.png</file>
|
||||
<file>data/images/loved.png</file>
|
||||
<file>data/images/not-loved.png</file>
|
||||
<file>data/images/no-album-art-placeholder.png</file>
|
||||
<file>data/images/no-artist-image-placeholder.png</file>
|
||||
<file>data/images/track-placeholder.png</file>
|
||||
<file>data/images/now-playing-panel.png</file>
|
||||
<file>data/images/now-playing-speaker.png</file>
|
||||
<file>data/images/pause-pressed.png</file>
|
||||
<file>data/images/pause-rest.png</file>
|
||||
<file>data/images/play-pressed.png</file>
|
||||
<file>data/images/play-rest.png</file>
|
||||
<file>data/images/sipplugin-add.png</file>
|
||||
<file>data/images/sipplugin-remove.png</file>
|
||||
<file>data/images/playlist-icon.png</file>
|
||||
<file>data/images/repeat-1-on-pressed.png</file>
|
||||
<file>data/images/repeat-1-on-rest.png</file>
|
||||
<file>data/images/repeat-all-on-pressed.png</file>
|
||||
<file>data/images/repeat-all-on-rest.png</file>
|
||||
<file>data/images/repeat-off-pressed.png</file>
|
||||
<file>data/images/repeat-off-rest.png</file>
|
||||
<file>data/images/search-box-dismiss-x.png</file>
|
||||
<file>data/images/seek-and-volume-knob-pressed.png</file>
|
||||
<file>data/images/seek-and-volume-knob-rest.png</file>
|
||||
<file>data/images/seek-slider-bkg.png</file>
|
||||
<file>data/images/seek-slider-level.png</file>
|
||||
<file>data/images/shuffle-off-pressed.png</file>
|
||||
<file>data/images/shuffle-off-rest.png</file>
|
||||
<file>data/images/shuffle-on-pressed.png</file>
|
||||
<file>data/images/shuffle-on-rest.png</file>
|
||||
<file>data/images/skip-pressed.png</file>
|
||||
<file>data/images/skip-rest.png</file>
|
||||
<file>data/images/user-avatar.png</file>
|
||||
<file>data/images/view-toggle-active-centre.png</file>
|
||||
<file>data/images/view-toggle-active-left.png</file>
|
||||
<file>data/images/view-toggle-active-right.png</file>
|
||||
<file>data/images/view-toggle-icon-artist-active.png</file>
|
||||
<file>data/images/view-toggle-icon-artist-inactive.png</file>
|
||||
<file>data/images/view-toggle-icon-cloud-active.png</file>
|
||||
<file>data/images/view-toggle-icon-cloud-inactive.png</file>
|
||||
<file>data/images/view-toggle-icon-list-active.png</file>
|
||||
<file>data/images/view-toggle-icon-list-inactive.png</file>
|
||||
<file>data/images/view-toggle-inactive-centre.png</file>
|
||||
<file>data/images/view-toggle-inactive-left.png</file>
|
||||
<file>data/images/view-toggle-inactive-right.png</file>
|
||||
<file>data/images/view-toggle-pressed-centre.png</file>
|
||||
<file>data/images/view-toggle-pressed-left.png</file>
|
||||
<file>data/images/view-toggle-pressed-right.png</file>
|
||||
<file>data/images/list-add.png</file>
|
||||
<file>data/images/list-remove.png</file>
|
||||
<file>data/images/arrow-up-double.png</file>
|
||||
<file>data/images/arrow-down-double.png</file>
|
||||
<file>data/images/volume-icon-full.png</file>
|
||||
<file>data/images/arrow-right-double.png</file>
|
||||
<file>data/images/view-refresh.png</file>
|
||||
<file>data/images/volume-icon-muted.png</file>
|
||||
<file>data/images/volume-slider-bkg.png</file>
|
||||
<file>data/images/volume-slider-level.png</file>
|
||||
<file>data/images/echonest_logo.png</file>
|
||||
<file>data/images/loading-animation.gif</file>
|
||||
<file>data/images/info.png</file>
|
||||
<file>data/images/home.png</file>
|
||||
<file>data/images/back.png</file>
|
||||
<file>data/images/forward.png</file>
|
||||
<file>data/images/music-icon.png</file>
|
||||
<file>data/images/configure.png</file>
|
||||
<file>data/images/create-playlist.png</file>
|
||||
<file>data/images/add.png</file>
|
||||
<file>data/images/recently-played.png</file>
|
||||
<file>data/images/supercollection.png</file>
|
||||
<file>data/images/sipplugin-online.png</file>
|
||||
<file>data/images/sipplugin-offline.png</file>
|
||||
<file>data/images/advanced-settings.png</file>
|
||||
<file>data/images/account-settings.png</file>
|
||||
<file>data/images/music-settings.png</file>
|
||||
<file>data/images/resolvers-settings.png</file>
|
||||
<file>data/images/lastfm-settings.png</file>
|
||||
<file>data/images/automatic-playlist.png</file>
|
||||
<file>data/images/station.png</file>
|
||||
<file>data/images/new-additions.png</file>
|
||||
<file>data/images/loved_playlist.png</file>
|
||||
<file>data/images/dashboard.png</file>
|
||||
<file>data/stylesheets/topbar-radiobuttons.css</file>
|
||||
<file>data/icons/tomahawk-icon-16x16.png</file>
|
||||
<file>data/icons/tomahawk-icon-32x32.png</file>
|
||||
<file>data/icons/tomahawk-icon-64x64.png</file>
|
||||
<file>data/icons/tomahawk-icon-128x128.png</file>
|
||||
<file>data/icons/tomahawk-icon-256x256.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-32x32.png</file>
|
||||
<file>data/icons/audio-x-generic-16x16.png</file>
|
||||
<file>data/www/auth.html</file>
|
||||
<file>data/www/auth.na.html</file>
|
||||
<file>data/www/tomahawk_banner_small.png</file>
|
||||
<file>data/sql/dbmigrate-22_to_23.sql</file>
|
||||
<file>data/sql/dbmigrate-23_to_24.sql</file>
|
||||
<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>
|
||||
<qresource>
|
||||
<file>./data/images/add-friend-button-pressed.png</file>
|
||||
<file>./data/images/add-friend-button-rest.png</file>
|
||||
<file>./data/images/avatar-dude-plus.png</file>
|
||||
<file>./data/images/avatar-dude.png</file>
|
||||
<file>./data/images/back-pressed.png</file>
|
||||
<file>./data/images/back-rest.png</file>
|
||||
<file>./data/images/cover-shadow.png</file>
|
||||
<file>./data/images/magnifying-glass.png</file>
|
||||
<file>./data/images/no-album-art-placeholder.png</file>
|
||||
<file>./data/images/now-playing-panel.png</file>
|
||||
<file>./data/images/now-playing-speaker.png</file>
|
||||
<file>./data/images/pause-pressed.png</file>
|
||||
<file>./data/images/pause-rest.png</file>
|
||||
<file>./data/images/play-pressed.png</file>
|
||||
<file>./data/images/play-rest.png</file>
|
||||
<file>./data/images/sipplugin-add.png</file>
|
||||
<file>./data/images/sipplugin-remove.png</file>
|
||||
<file>./data/images/playlist-icon.png</file>
|
||||
<file>./data/images/repeat-1-on-pressed.png</file>
|
||||
<file>./data/images/repeat-1-on-rest.png</file>
|
||||
<file>./data/images/repeat-all-on-pressed.png</file>
|
||||
<file>./data/images/repeat-all-on-rest.png</file>
|
||||
<file>./data/images/repeat-off-pressed.png</file>
|
||||
<file>./data/images/repeat-off-rest.png</file>
|
||||
<file>./data/images/search-box-dismiss-x.png</file>
|
||||
<file>./data/images/search-box.png</file>
|
||||
<file>./data/images/seek-and-volume-knob-pressed.png</file>
|
||||
<file>./data/images/seek-and-volume-knob-rest.png</file>
|
||||
<file>./data/images/seek-slider-bkg.png</file>
|
||||
<file>./data/images/seek-slider-level.png</file>
|
||||
<file>./data/images/shuffle-off-pressed.png</file>
|
||||
<file>./data/images/shuffle-off-rest.png</file>
|
||||
<file>./data/images/shuffle-on-pressed.png</file>
|
||||
<file>./data/images/shuffle-on-rest.png</file>
|
||||
<file>./data/images/skip-pressed.png</file>
|
||||
<file>./data/images/skip-rest.png</file>
|
||||
<file>./data/images/source-info.png</file>
|
||||
<file>./data/images/source-off-pressed.png</file>
|
||||
<file>./data/images/source-off-rest.png</file>
|
||||
<file>./data/images/source-on-pressed.png</file>
|
||||
<file>./data/images/source-on-rest.png</file>
|
||||
<file>./data/images/status-alert-icon.png</file>
|
||||
<file>./data/images/status-bar-bkg.png</file>
|
||||
<file>./data/images/status-dismiss-x.png</file>
|
||||
<file>./data/images/user-avatar.png</file>
|
||||
<file>./data/images/view-toggle-active-centre.png</file>
|
||||
<file>./data/images/view-toggle-active-left.png</file>
|
||||
<file>./data/images/view-toggle-active-right.png</file>
|
||||
<file>./data/images/view-toggle-icon-artist-active.png</file>
|
||||
<file>./data/images/view-toggle-icon-artist-inactive.png</file>
|
||||
<file>./data/images/view-toggle-icon-cloud-active.png</file>
|
||||
<file>./data/images/view-toggle-icon-cloud-inactive.png</file>
|
||||
<file>./data/images/view-toggle-icon-list-active.png</file>
|
||||
<file>./data/images/view-toggle-icon-list-inactive.png</file>
|
||||
<file>./data/images/view-toggle-inactive-centre.png</file>
|
||||
<file>./data/images/view-toggle-inactive-left.png</file>
|
||||
<file>./data/images/view-toggle-inactive-right.png</file>
|
||||
<file>./data/images/view-toggle-pressed-centre.png</file>
|
||||
<file>./data/images/view-toggle-pressed-left.png</file>
|
||||
<file>./data/images/view-toggle-pressed-right.png</file>
|
||||
<file>./data/images/list-add.png</file>
|
||||
<file>./data/images/list-remove.png</file>
|
||||
<file>./data/images/arrow-up-double.png</file>
|
||||
<file>./data/images/arrow-down-double.png</file>
|
||||
<file>./data/images/volume-icon-full.png</file>
|
||||
<file>./data/images/arrow-right-double.png</file>
|
||||
<file>./data/images/view-refresh.png</file>
|
||||
<file>./data/images/volume-icon-muted.png</file>
|
||||
<file>./data/images/volume-slider-bkg.png</file>
|
||||
<file>./data/images/volume-slider-level.png</file>
|
||||
<file>./data/images/echonest_logo.png</file>
|
||||
<file>./data/images/loading-animation.gif</file>
|
||||
<file>./data/images/home.png</file>
|
||||
<file>./data/images/back.png</file>
|
||||
<file>./data/images/forward.png</file>
|
||||
<file>./data/images/music-icon.png</file>
|
||||
<file>./data/images/configure.png</file>
|
||||
<file>./data/images/create-playlist.png</file>
|
||||
<file>./data/images/add.png</file>
|
||||
<file>./data/images/recently-played.png</file>
|
||||
<file>./data/images/supercollection.png</file>
|
||||
<file>./data/images/sipplugin-online.png</file>
|
||||
<file>./data/images/sipplugin-offline.png</file>
|
||||
<file>./data/images/advanced-settings.png</file>
|
||||
<file>./data/images/account-settings.png</file>
|
||||
<file>./data/images/music-settings.png</file>
|
||||
<file>./data/images/resolvers-settings.png</file>
|
||||
<file>./data/images/lastfm-settings.png</file>
|
||||
<file>./data/stylesheets/topbar-radiobuttons.css</file>
|
||||
<file>./data/icons/tomahawk-icon-16x16.png</file>
|
||||
<file>./data/icons/tomahawk-icon-32x32.png</file>
|
||||
<file>./data/icons/tomahawk-icon-64x64.png</file>
|
||||
<file>./data/icons/tomahawk-icon-128x128.png</file>
|
||||
<file>./data/icons/tomahawk-icon-256x256.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-32x32.png</file>
|
||||
<file>./data/icons/audio-x-generic-16x16.png</file>
|
||||
<file>./data/www/auth.html</file>
|
||||
<file>./data/www/auth.na.html</file>
|
||||
<file>./data/www/tomahawk_banner_small.png</file>
|
||||
<file>./data/sql/dbmigrate-22_to_23.sql</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
@@ -41,17 +41,12 @@ if (APPLE)
|
||||
edited_plist # save in this variable
|
||||
"${plist}" # from the contents of this var
|
||||
)
|
||||
# Disable non-release sparkle for now. We haven't used it yet.
|
||||
# IF( NOT CMAKE_BUILD_TYPE STREQUAL "Release" )
|
||||
# STRING( REPLACE "http://download.tomahawk-player.org/sparkle" # match this
|
||||
# "http://download.tomahawk-player.org/sparkle-debug" #replace with debug url
|
||||
# edited_plist # save in this variable
|
||||
# "${edited_plist}" # from the contents of this var
|
||||
# )
|
||||
# ENDIF()
|
||||
IF( NOT CMAKE_BUILD_TYPE STREQUAL "Release" )
|
||||
STRING( REPLACE "http://download.tomahawk-player.org/sparkle" # match this
|
||||
"http://download.tomahawk-player.org/sparkle-debug" #replace with debug url
|
||||
edited_plist # save in this variable
|
||||
"${edited_plist}" # from the contents of this var
|
||||
)
|
||||
ENDIF()
|
||||
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)
|
||||
|
@@ -4,17 +4,13 @@ CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
|
||||
IF( "${gui}" STREQUAL "no" )
|
||||
SET( QT_DONT_USE_QTGUI TRUE )
|
||||
ENDIF()
|
||||
|
||||
IF( UNIX AND NOT APPLE )
|
||||
SET( QT_USE_QTDBUS TRUE )
|
||||
ENDIF( UNIX AND NOT APPLE )
|
||||
SET( QT_USE_QTSQL TRUE )
|
||||
SET( QT_USE_QTNETWORK TRUE )
|
||||
SET( QT_USE_QTXML TRUE )
|
||||
SET( QT_USE_QTWEBKIT TRUE )
|
||||
|
||||
INCLUDE( ${QT_USE_FILE} )
|
||||
INCLUDE( AddAppIconMacro )
|
||||
INCLUDE( ${CMAKE_MODULE_PATH}/AddAppIconMacro.cmake )
|
||||
|
||||
#SET( CMAKE_BUILD_TYPE "Release" )
|
||||
SET( CMAKE_VERBOSE_MAKEFILE ON )
|
||||
@@ -72,9 +68,10 @@ SET( tomahawkSourcesGui ${tomahawkSourcesGui}
|
||||
configdelegatebase.cpp
|
||||
sipconfigdelegate.cpp
|
||||
resolverconfigdelegate.cpp
|
||||
settingslistdelegate.cpp
|
||||
resolversmodel.cpp
|
||||
tomahawkwindow.cpp
|
||||
|
||||
win/qtwin.cpp
|
||||
)
|
||||
|
||||
SET( tomahawkHeaders ${tomahawkHeaders}
|
||||
@@ -116,18 +113,20 @@ SET( tomahawkHeadersGui ${tomahawkHeadersGui}
|
||||
configdelegatebase.h
|
||||
resolverconfigdelegate.h
|
||||
sipconfigdelegate.h
|
||||
settingslistdelegate.h
|
||||
resolversmodel.h
|
||||
delegateconfigwrapper.h
|
||||
tomahawkwindow.h
|
||||
|
||||
|
||||
win/qtwin.h
|
||||
)
|
||||
|
||||
SET( tomahawkUI ${tomahawkUI}
|
||||
tomahawkwindow.ui
|
||||
settingsdialog.ui
|
||||
diagnosticsdialog.ui
|
||||
stackedsettingsdialog.ui
|
||||
proxydialog.ui
|
||||
searchbox.ui
|
||||
|
||||
audiocontrols.ui
|
||||
)
|
||||
@@ -237,6 +236,7 @@ TARGET_LINK_LIBRARIES( tomahawk
|
||||
${QXTWEB_LIBRARIES}
|
||||
${QJSON_LIBRARIES}
|
||||
${TAGLIB_LIBRARIES}
|
||||
${CLUCENE_LIBRARIES}
|
||||
)
|
||||
|
||||
|
||||
@@ -265,5 +265,4 @@ IF( UNIX AND NOT APPLE AND KDE4_INSTALLED ) #install protocol file
|
||||
ENDIF()
|
||||
INSTALL( FILES ${CMAKE_BINARY_DIR}/tomahawk.protocol DESTINATION ${PROTOCOL_INSTALL_DIR} )
|
||||
ENDIF()
|
||||
|
||||
#INCLUDE( "CPack.txt" )
|
||||
|
70
src/CPack.txt
Normal file
@@ -0,0 +1,70 @@
|
||||
# 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,8 +23,6 @@
|
||||
|
||||
#include "libtomahawk/pipeline.h"
|
||||
|
||||
#include "utils/logger.h"
|
||||
|
||||
using namespace Tomahawk;
|
||||
|
||||
|
||||
@@ -43,7 +41,6 @@ PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
|
||||
headers << tr( "Searching For" ) << tr( "Pending" );
|
||||
m_tree->setHeaderLabels( headers );
|
||||
|
||||
m_tree->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
|
||||
m_tree->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Ignored );
|
||||
m_tree->setColumnCount( 2 );
|
||||
m_tree->setColumnWidth( 0, 200 );
|
||||
@@ -60,17 +57,6 @@ PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
|
||||
connect( Pipeline::instance(), SIGNAL( resolving( Tomahawk::query_ptr ) ), SLOT( onPipelineUpdate( Tomahawk::query_ptr ) ) );
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -78,6 +64,8 @@ PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
|
||||
void
|
||||
PipelineStatusView::onPipelineUpdate( const query_ptr& query )
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
|
||||
QTreeWidgetItem* ti = m_tree->invisibleRootItem()->child( 0 );
|
||||
|
||||
if ( Pipeline::instance()->activeQueryCount() && !query.isNull() )
|
||||
|
@@ -19,6 +19,7 @@
|
||||
#ifndef PIPELINESTATUSVIEW_H
|
||||
#define PIPELINESTATUSVIEW_H
|
||||
|
||||
#include <QDebug>
|
||||
#include <QTreeWidget>
|
||||
|
||||
#include "typedefs.h"
|
||||
@@ -34,6 +35,7 @@ public:
|
||||
explicit PipelineStatusView( AnimatedSplitter* parent );
|
||||
virtual ~PipelineStatusView()
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
}
|
||||
|
||||
QSize sizeHint() const;
|
||||
|
@@ -20,24 +20,13 @@
|
||||
#include "ui_audiocontrols.h"
|
||||
|
||||
#include <QNetworkReply>
|
||||
#include <QDropEvent>
|
||||
#include <QMouseEvent>
|
||||
|
||||
#include "audio/audioengine.h"
|
||||
#include "viewmanager.h"
|
||||
#include "playlist/playlistview.h"
|
||||
#include "database/database.h"
|
||||
#include "database/databasecommand_socialaction.h"
|
||||
|
||||
#include "album.h"
|
||||
|
||||
#include "utils/imagebutton.h"
|
||||
#include "utils/tomahawkutils.h"
|
||||
#include "utils/logger.h"
|
||||
#include <globalactionmanager.h>
|
||||
#include "dropjob.h"
|
||||
|
||||
using namespace Tomahawk;
|
||||
#include "album.h"
|
||||
|
||||
static QString s_acInfoIdentifier = QString( "AUDIOCONTROLS" );
|
||||
|
||||
@@ -49,13 +38,14 @@ AudioControls::AudioControls( QWidget* parent )
|
||||
, m_shuffled( false )
|
||||
{
|
||||
ui->setupUi( this );
|
||||
setAcceptDrops( true );
|
||||
|
||||
ui->buttonAreaLayout->setSpacing( 2 );
|
||||
|
||||
QFont font( ui->artistTrackLabel->font() );
|
||||
font.setPixelSize( 12 );
|
||||
|
||||
#ifdef Q_WS_MAC
|
||||
font.setPixelSize( font.pixelSize() - 2 );
|
||||
font.setPointSize( font.pointSize() - 2 );
|
||||
#endif
|
||||
|
||||
ui->artistTrackLabel->setFont( font );
|
||||
@@ -85,15 +75,58 @@ AudioControls::AudioControls( QWidget* parent )
|
||||
ui->repeatButton->setPixmap( RESPATH "images/repeat-off-pressed.png", QIcon::Off, QIcon::Active );
|
||||
ui->volumeLowButton->setPixmap( RESPATH "images/volume-icon-muted.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->metaDataArea->setStyleSheet( "QWidget#metaDataArea {\nborder-width: 4px;\nborder-image: url(" RESPATH "images/now-playing-panel.png) 4 4 4 4 stretch stretch; }" );
|
||||
|
||||
ui->seekSlider->setFixedHeight( 20 );
|
||||
ui->seekSlider->setEnabled( true );
|
||||
ui->seekSlider->setStyleSheet( "QSlider::groove::horizontal {"
|
||||
"margin: 5px; border-width: 3px;"
|
||||
"border-image: url(" RESPATH "images/seek-slider-bkg.png) 3 3 3 3 stretch stretch;"
|
||||
"}"
|
||||
|
||||
"QSlider::sub-page:horizontal {"
|
||||
"margin: 5px; border-width: 3px;"
|
||||
"border-image: url(" RESPATH "images/seek-slider-level.png) 3 3 3 3 stretch stretch;"
|
||||
"}"
|
||||
|
||||
"QSlider::handle::horizontal {"
|
||||
"margin-bottom: -7px; margin-top: -7px;"
|
||||
"height: 17px; width: 16px;"
|
||||
"background-image: url(" RESPATH "images/seek-and-volume-knob-rest.png);"
|
||||
"background-repeat: no-repeat;"
|
||||
"}" );
|
||||
|
||||
ui->volumeSlider->setFixedHeight( 20 );
|
||||
ui->volumeSlider->setRange( 0, 100 );
|
||||
ui->volumeSlider->setValue( AudioEngine::instance()->volume() );
|
||||
ui->volumeSlider->setStyleSheet( "QSlider::groove::horizontal {"
|
||||
"margin: 5px; border-width: 3px;"
|
||||
"border-image: url(" RESPATH "images/volume-slider-bkg.png) 3 3 3 3 stretch stretch;"
|
||||
"}"
|
||||
|
||||
"QSlider::sub-page:horizontal {"
|
||||
"margin: 5px; border-width: 3px;"
|
||||
"border-image: url(" RESPATH "images/seek-slider-level.png) 3 3 3 3 stretch stretch;"
|
||||
"}"
|
||||
|
||||
"QSlider::handle::horizontal {"
|
||||
"margin-bottom: -7px; margin-top: -7px;"
|
||||
"height: 17px; width: 16px;"
|
||||
"background-image: url(" RESPATH "images/seek-and-volume-knob-rest.png);"
|
||||
"background-repeat: no-repeat;"
|
||||
"}" );
|
||||
|
||||
/* m_playAction = new QAction( this );
|
||||
m_pauseAction = new QAction( this );
|
||||
m_prevAction = new QAction( this );
|
||||
m_nextAction = new QAction( this );
|
||||
|
||||
connect( m_playAction, SIGNAL( triggered() ), (QObject*)APP->audioEngine(), SLOT( play() ) );
|
||||
connect( m_pauseAction, SIGNAL( triggered() ), (QObject*)APP->audioEngine(), SLOT( pause() ) );
|
||||
connect( m_prevAction, SIGNAL( triggered() ), (QObject*)APP->audioEngine(), SLOT( previous() ) );
|
||||
connect( m_nextAction, SIGNAL( triggered() ), (QObject*)APP->audioEngine(), SLOT( next() ) ); */
|
||||
|
||||
connect( ui->seekSlider, SIGNAL( valueChanged( int ) ), AudioEngine::instance(), SLOT( seek( int ) ) );
|
||||
connect( ui->volumeSlider, SIGNAL( valueChanged( int ) ), AudioEngine::instance(), SLOT( setVolume( int ) ) );
|
||||
@@ -104,6 +137,7 @@ AudioControls::AudioControls( QWidget* parent )
|
||||
connect( ui->volumeLowButton, SIGNAL( clicked() ), AudioEngine::instance(), SLOT( lowerVolume() ) );
|
||||
connect( ui->volumeHighButton, SIGNAL( clicked() ), AudioEngine::instance(), SLOT( raiseVolume() ) );
|
||||
|
||||
|
||||
connect( ui->playPauseButton, SIGNAL( clicked() ), this, SIGNAL( playPressed() ) );
|
||||
connect( ui->pauseButton, SIGNAL( clicked() ), this, SIGNAL( pausePressed() ) );
|
||||
|
||||
@@ -113,7 +147,6 @@ AudioControls::AudioControls( QWidget* parent )
|
||||
connect( ui->artistTrackLabel, SIGNAL( clickedArtist() ), SLOT( onArtistClicked() ) );
|
||||
connect( ui->artistTrackLabel, SIGNAL( clickedTrack() ), SLOT( onTrackClicked() ) );
|
||||
connect( ui->albumLabel, SIGNAL( clickedAlbum() ), SLOT( onAlbumClicked() ) );
|
||||
connect( ui->loveButton, SIGNAL( clicked( bool ) ), SLOT( onLoveButtonClicked( bool ) ) );
|
||||
|
||||
// <From AudioEngine>
|
||||
connect( AudioEngine::instance(), SIGNAL( loading( Tomahawk::result_ptr ) ), SLOT( onPlaybackLoading( Tomahawk::result_ptr ) ) );
|
||||
@@ -128,19 +161,11 @@ AudioControls::AudioControls( QWidget* parent )
|
||||
.scaled( ui->coverImage->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
|
||||
|
||||
connect( Tomahawk::InfoSystem::InfoSystem::instance(),
|
||||
SIGNAL( info( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ),
|
||||
SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ) );
|
||||
SIGNAL( info( QString, Tomahawk::InfoSystem::InfoType, QVariant, QVariant, Tomahawk::InfoSystem::InfoCustomData ) ),
|
||||
SLOT( infoSystemInfo( QString, Tomahawk::InfoSystem::InfoType, QVariant, QVariant, Tomahawk::InfoSystem::InfoCustomData ) ) );
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
@@ -179,7 +204,7 @@ AudioControls::onVolumeChanged( int volume )
|
||||
void
|
||||
AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result )
|
||||
{
|
||||
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
|
||||
onPlaybackLoading( result );
|
||||
|
||||
@@ -187,37 +212,38 @@ AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result )
|
||||
trackInfo["artist"] = result->artist()->name();
|
||||
trackInfo["album"] = result->album()->name();
|
||||
|
||||
Tomahawk::InfoSystem::InfoRequestData requestData;
|
||||
requestData.caller = s_acInfoIdentifier;
|
||||
requestData.type = Tomahawk::InfoSystem::InfoAlbumCoverArt;
|
||||
requestData.input = QVariant::fromValue< Tomahawk::InfoSystem::InfoCriteriaHash >( trackInfo );
|
||||
requestData.customData = QVariantMap();
|
||||
|
||||
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData );
|
||||
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo(
|
||||
s_acInfoIdentifier, Tomahawk::InfoSystem::InfoAlbumCoverArt,
|
||||
QVariant::fromValue< Tomahawk::InfoSystem::InfoCriteriaHash >( trackInfo ), Tomahawk::InfoSystem::InfoCustomData() );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AudioControls::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output )
|
||||
AudioControls::infoSystemInfo( QString caller, Tomahawk::InfoSystem::InfoType type, QVariant input, QVariant output, Tomahawk::InfoSystem::InfoCustomData customData )
|
||||
{
|
||||
if ( requestData.caller != s_acInfoIdentifier || requestData.type != Tomahawk::InfoSystem::InfoAlbumCoverArt )
|
||||
Q_UNUSED( input );
|
||||
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;
|
||||
}
|
||||
|
||||
if ( m_currentTrack.isNull() )
|
||||
{
|
||||
tLog() << "Current track is null when trying to apply fetched cover art";
|
||||
qDebug() << "Current track is null when trying to apply fetched cover art";
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !output.canConvert< QVariantMap >() )
|
||||
if ( !output.canConvert< Tomahawk::InfoSystem::InfoCustomData >() )
|
||||
{
|
||||
tDebug( LOGINFO ) << "Cannot convert fetched art from a QByteArray";
|
||||
qDebug() << "Cannot convert fetched art from a QByteArray";
|
||||
return;
|
||||
}
|
||||
|
||||
QVariantMap returnedData = output.value< QVariantMap >();
|
||||
Tomahawk::InfoSystem::InfoCustomData returnedData = output.value< Tomahawk::InfoSystem::InfoCustomData >();
|
||||
const QByteArray ba = returnedData["imgbytes"].toByteArray();
|
||||
if ( ba.length() )
|
||||
{
|
||||
@@ -236,13 +262,14 @@ void
|
||||
AudioControls::infoSystemFinished( QString target )
|
||||
{
|
||||
Q_UNUSED( target );
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result )
|
||||
{
|
||||
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
|
||||
m_currentTrack = result;
|
||||
|
||||
@@ -258,49 +285,39 @@ AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result )
|
||||
ui->seekSlider->setValue( 0 );
|
||||
ui->seekSlider->setVisible( true );
|
||||
|
||||
ui->stackedLayout->setCurrentWidget( ui->pauseButton );
|
||||
/* m_playAction->setEnabled( false );
|
||||
m_pauseAction->setEnabled( true ); */
|
||||
|
||||
ui->loveButton->setEnabled( true );
|
||||
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 );
|
||||
}
|
||||
}
|
||||
ui->pauseButton->setEnabled( true );
|
||||
ui->pauseButton->setVisible( true );
|
||||
ui->playPauseButton->setVisible( false );
|
||||
ui->playPauseButton->setEnabled( false );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AudioControls::onPlaybackPaused()
|
||||
{
|
||||
ui->stackedLayout->setCurrentWidget( ui->playPauseButton );
|
||||
/* m_pauseAction->setEnabled( false );
|
||||
m_playAction->setEnabled( true ); */
|
||||
|
||||
ui->pauseButton->setVisible( false );
|
||||
ui->pauseButton->setEnabled( false );
|
||||
ui->playPauseButton->setEnabled( true );
|
||||
ui->playPauseButton->setVisible( true );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AudioControls::onPlaybackResumed()
|
||||
{
|
||||
ui->stackedLayout->setCurrentWidget( ui->pauseButton );
|
||||
ui->loveButton->setVisible( true );
|
||||
/* m_playAction->setEnabled( false );
|
||||
m_pauseAction->setEnabled( true ); */
|
||||
|
||||
ui->pauseButton->setVisible( true );
|
||||
ui->pauseButton->setEnabled( true );
|
||||
ui->playPauseButton->setVisible( false );
|
||||
ui->playPauseButton->setEnabled( false );
|
||||
}
|
||||
|
||||
|
||||
@@ -317,9 +334,13 @@ AudioControls::onPlaybackStopped()
|
||||
ui->coverImage->setPixmap( QPixmap() );
|
||||
ui->seekSlider->setVisible( false );
|
||||
|
||||
ui->stackedLayout->setCurrentWidget( ui->playPauseButton );
|
||||
ui->loveButton->setEnabled( false );
|
||||
ui->loveButton->setVisible( false );
|
||||
ui->pauseButton->setVisible( false );
|
||||
ui->pauseButton->setEnabled( false );
|
||||
ui->playPauseButton->setEnabled( true );
|
||||
ui->playPauseButton->setVisible( true );
|
||||
|
||||
/* m_pauseAction->setEnabled( false );
|
||||
m_playAction->setEnabled( true ); */
|
||||
}
|
||||
|
||||
|
||||
@@ -457,83 +478,3 @@ AudioControls::onTrackClicked()
|
||||
{
|
||||
ViewManager::instance()->showCurrentTrack();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AudioControls::dragEnterEvent( QDragEnterEvent* e )
|
||||
{
|
||||
if ( DropJob::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 ( DropJob::acceptsMimeData( e->mimeData() ) )
|
||||
{
|
||||
DropJob *dj = new DropJob();
|
||||
connect( dj, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( droppedTracks( QList<Tomahawk::query_ptr> ) ) );
|
||||
dj->tracksFromMimeData( e->mimeData() );
|
||||
|
||||
e->accept();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AudioControls::droppedTracks( QList< query_ptr > tracks )
|
||||
{
|
||||
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,9 +25,6 @@
|
||||
#include "playlistinterface.h"
|
||||
#include "infosystem/infosystem.h"
|
||||
|
||||
class QDropEvent;
|
||||
class QDragEnterEvent;
|
||||
class QDragMoveEvent;
|
||||
namespace Ui
|
||||
{
|
||||
class AudioControls;
|
||||
@@ -46,14 +43,11 @@ signals:
|
||||
void pausePressed();
|
||||
|
||||
public slots:
|
||||
void onRepeatModeChanged( Tomahawk::PlaylistInterface::RepeatMode mode );
|
||||
void onRepeatModeChanged( PlaylistInterface::RepeatMode mode );
|
||||
void onShuffleModeChanged( bool enabled );
|
||||
|
||||
protected:
|
||||
void changeEvent( QEvent* e );
|
||||
void dragEnterEvent ( QDragEnterEvent* );
|
||||
void dragMoveEvent ( QDragMoveEvent* );
|
||||
void dropEvent ( QDropEvent* );
|
||||
|
||||
private slots:
|
||||
void onPlaybackStarted( const Tomahawk::result_ptr& result );
|
||||
@@ -71,21 +65,22 @@ private slots:
|
||||
void onArtistClicked();
|
||||
void onAlbumClicked();
|
||||
void onTrackClicked();
|
||||
void onLoveButtonClicked( bool );
|
||||
|
||||
void infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output );
|
||||
void infoSystemInfo( QString caller, Tomahawk::InfoSystem::InfoType type, QVariant input, QVariant output, Tomahawk::InfoSystem::InfoCustomData customData );
|
||||
void infoSystemFinished( QString target );
|
||||
|
||||
void droppedTracks( QList<Tomahawk::query_ptr> );
|
||||
|
||||
void socialActionsLoaded();
|
||||
private:
|
||||
Ui::AudioControls *ui;
|
||||
|
||||
QAction* m_playAction;
|
||||
QAction* m_pauseAction;
|
||||
QAction* m_prevAction;
|
||||
QAction* m_nextAction;
|
||||
|
||||
QPixmap m_defaultCover;
|
||||
|
||||
Tomahawk::result_ptr m_currentTrack;
|
||||
Tomahawk::PlaylistInterface::RepeatMode m_repeatMode;
|
||||
PlaylistInterface::RepeatMode m_repeatMode;
|
||||
bool m_shuffled;
|
||||
};
|
||||
|
||||
|
@@ -6,7 +6,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>929</width>
|
||||
<width>939</width>
|
||||
<height>80</height>
|
||||
</rect>
|
||||
</property>
|
||||
@@ -60,7 +60,7 @@
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="buttonAreaLayout">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
@@ -80,25 +80,18 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QStackedLayout" name="stackedLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
<widget class="ImageButton" name="playPauseButton">
|
||||
<property name="text">
|
||||
<string>Play</string>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="ImageButton" name="playPauseButton">
|
||||
<property name="text">
|
||||
<string>Play</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ImageButton" name="pauseButton">
|
||||
<property name="text">
|
||||
<string>Pause</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ImageButton" name="pauseButton">
|
||||
<property name="text">
|
||||
<string>Pause</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="ImageButton" name="nextButton">
|
||||
@@ -108,7 +101,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
@@ -258,39 +251,6 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</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>
|
||||
<widget class="QLabel" name="ownerLabel">
|
||||
<property name="font">
|
||||
@@ -337,7 +297,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="SeekSlider" name="seekSlider">
|
||||
<widget class="QSlider" name="seekSlider">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
@@ -489,7 +449,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="SeekSlider" name="volumeSlider">
|
||||
<widget class="QSlider" name="volumeSlider">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
@@ -529,11 +489,6 @@
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>SeekSlider</class>
|
||||
<extends>QSlider</extends>
|
||||
<header location="global">widgets/SeekSlider.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>ImageButton</class>
|
||||
<extends>QPushButton</extends>
|
||||
|
@@ -18,13 +18,12 @@
|
||||
|
||||
#include "configdelegatebase.h"
|
||||
|
||||
#include "utils/tomahawkutils.h"
|
||||
|
||||
#include <QPainter>
|
||||
#include <QApplication>
|
||||
#include <QMouseEvent>
|
||||
|
||||
#include "utils/tomahawkutils.h"
|
||||
#include "utils/logger.h"
|
||||
|
||||
ConfigDelegateBase::ConfigDelegateBase ( QObject* parent )
|
||||
: QStyledItemDelegate ( parent )
|
||||
{
|
||||
@@ -98,13 +97,13 @@ ConfigDelegateBase::editorEvent ( QEvent* event, QAbstractItemModel* model, cons
|
||||
return false;
|
||||
|
||||
// eat the double click events inside the check rect
|
||||
if( event->type() == QEvent::MouseButtonDblClick ) {
|
||||
return true;
|
||||
}
|
||||
if( event->type() == QEvent::MouseButtonDblClick ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
Qt::CheckState curState = static_cast< Qt::CheckState >( index.data( Qt::CheckStateRole ).toInt() );
|
||||
Qt::CheckState newState = curState == Qt::Checked ? Qt::Unchecked : Qt::Checked;
|
||||
return model->setData( index, newState, Qt::CheckStateRole );
|
||||
Qt::CheckState curState = static_cast< Qt::CheckState >( index.data( Qt::CheckStateRole ).toInt() );
|
||||
Qt::CheckState newState = curState == Qt::Checked ? Qt::Unchecked : Qt::Checked;
|
||||
return model->setData( index, newState, Qt::CheckStateRole );
|
||||
|
||||
} else if( event->type() == QEvent::MouseButtonPress ) {
|
||||
QMouseEvent* me = static_cast< QMouseEvent* >( event );
|
||||
|
@@ -21,7 +21,6 @@
|
||||
#include <QDialog>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QVBoxLayout>
|
||||
#include <QPushButton>
|
||||
|
||||
class DelegateConfigWrapper : public QDialog
|
||||
{
|
||||
@@ -29,10 +28,8 @@ class DelegateConfigWrapper : public QDialog
|
||||
public:
|
||||
DelegateConfigWrapper( QWidget* conf, const QString& title, QWidget* parent, Qt::WindowFlags flags = 0 ) : QDialog( parent, flags ), m_widget( conf )
|
||||
{
|
||||
m_widget->setWindowFlags( Qt::Sheet );
|
||||
#ifdef Q_OS_MAC
|
||||
m_widget->setVisible( true );
|
||||
#endif
|
||||
m_widget->setWindowFlags( Qt::Sheet );
|
||||
|
||||
setWindowTitle( title );
|
||||
QVBoxLayout* v = new QVBoxLayout( this );
|
||||
@@ -40,7 +37,6 @@ public:
|
||||
v->addWidget( m_widget );
|
||||
|
||||
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( this, SIGNAL( rejected() ), this, SLOT( rejected() ) );
|
||||
v->addWidget( buttons );
|
||||
@@ -51,19 +47,9 @@ public:
|
||||
setSizeGripEnabled( false );
|
||||
setMinimumSize( sizeHint() );
|
||||
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
|
||||
|
||||
}
|
||||
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 )
|
||||
{
|
||||
// let the config widget live to see another day
|
||||
@@ -86,18 +72,8 @@ public slots:
|
||||
m_widget->setVisible( false );
|
||||
}
|
||||
|
||||
void updateSizeHint() {
|
||||
hide();
|
||||
setSizeGripEnabled( false );
|
||||
setMinimumSize( sizeHint() );
|
||||
setMaximumSize( sizeHint() );
|
||||
|
||||
show();
|
||||
}
|
||||
|
||||
private:
|
||||
QWidget* m_widget;
|
||||
QPushButton* m_okButton;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -19,21 +19,17 @@
|
||||
#include "diagnosticsdialog.h"
|
||||
#include "ui_diagnosticsdialog.h"
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <sip/SipHandler.h>
|
||||
#include <network/servent.h>
|
||||
#include <sourcelist.h>
|
||||
|
||||
#include <QTextEdit>
|
||||
#include <QDebug>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QPushButton>
|
||||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
|
||||
#include "utils/logger.h"
|
||||
|
||||
|
||||
DiagnosticsDialog::DiagnosticsDialog( QWidget *parent )
|
||||
: QDialog( parent )
|
||||
, ui( new Ui::DiagnosticsDialog )
|
||||
@@ -56,11 +52,6 @@ void DiagnosticsDialog::updateLogView()
|
||||
.arg( QDateTime::currentDateTime().toString() )
|
||||
);
|
||||
|
||||
// network
|
||||
log.append(
|
||||
"TOMAHAWK-VERSION: " TOMAHAWK_VERSION "\n\n\n"
|
||||
);
|
||||
|
||||
// network
|
||||
log.append(
|
||||
"NETWORK:\n"
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#define DIAGNOSTICSDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QDebug>
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
|
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>724</width>
|
||||
<height>433</height>
|
||||
<width>621</width>
|
||||
<height>434</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
@@ -20,9 +20,6 @@
|
||||
<string>Tomahawk Diagnostics</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="margin">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
@@ -60,6 +57,8 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<resources>
|
||||
<include location="../resources.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
@@ -22,7 +22,8 @@
|
||||
#ifdef ENABLE_HEADLESS
|
||||
|
||||
#define TOMAHAWK_APPLICATION QCoreApplication
|
||||
#include <QApplication>
|
||||
#define TOMAHAWK_HEADLESS
|
||||
#include <QApplication>>
|
||||
|
||||
#else
|
||||
|
||||
|
@@ -21,17 +21,15 @@ set( libSources
|
||||
artist.cpp
|
||||
album.cpp
|
||||
collection.cpp
|
||||
webcollection.cpp
|
||||
playlist.cpp
|
||||
resolver.cpp
|
||||
query.cpp
|
||||
result.cpp
|
||||
source.cpp
|
||||
sourceplaylistinterface.cpp
|
||||
viewpage.cpp
|
||||
viewmanager.cpp
|
||||
globalactionmanager.cpp
|
||||
contextmenu.cpp
|
||||
dropjob.cpp
|
||||
|
||||
sip/SipPlugin.cpp
|
||||
sip/SipHandler.cpp
|
||||
@@ -56,7 +54,6 @@ set( libSources
|
||||
database/databasecommand_addfiles.cpp
|
||||
database/databasecommand_deletefiles.cpp
|
||||
database/databasecommand_dirmtimes.cpp
|
||||
database/databasecommand_filemtimes.cpp
|
||||
database/databasecommand_loadfile.cpp
|
||||
database/databasecommand_logplayback.cpp
|
||||
database/databasecommand_addsource.cpp
|
||||
@@ -76,24 +73,19 @@ set( libSources
|
||||
database/databasecommand_setdynamicplaylistrevision.cpp
|
||||
database/databasecommand_createdynamicplaylist.cpp
|
||||
database/databasecommand_loaddynamicplaylist.cpp
|
||||
database/databasecommand_loaddynamicplaylistentries.cpp
|
||||
database/databasecommand_loadallautoplaylists.cpp
|
||||
database/databasecommand_loadallstations.cpp
|
||||
database/databasecommand_deletedynamicplaylist.cpp
|
||||
database/databasecommand_addclientauth.cpp
|
||||
database/databasecommand_clientauthvalid.cpp
|
||||
database/databasecommand_socialaction.cpp
|
||||
database/databasecommand_loadsocialactions.cpp
|
||||
database/databasecommand_genericselect.cpp
|
||||
database/database.cpp
|
||||
|
||||
infosystem/infosystemcache.cpp
|
||||
infosystem/infosystem.cpp
|
||||
infosystem/infosystemworker.cpp
|
||||
infosystem/infoplugins/generic/echonestplugin.cpp
|
||||
infosystem/infoplugins/generic/lastfmplugin.cpp
|
||||
infosystem/infoplugins/generic/musixmatchplugin.cpp
|
||||
infosystem/infoplugins/generic/musicbrainzPlugin.cpp
|
||||
infosystem/infoplugins/echonestplugin.cpp
|
||||
infosystem/infoplugins/lastfmplugin.cpp
|
||||
infosystem/infoplugins/musixmatchplugin.cpp
|
||||
|
||||
playlist/treemodel.cpp
|
||||
playlist/treeproxymodel.cpp
|
||||
@@ -120,7 +112,6 @@ set( libSources
|
||||
playlist/albumitemdelegate.cpp
|
||||
playlist/albumview.cpp
|
||||
playlist/artistview.cpp
|
||||
playlist/customplaylistview.cpp
|
||||
|
||||
playlist/topbar/topbar.cpp
|
||||
playlist/topbar/clearbutton.cpp
|
||||
@@ -147,8 +138,6 @@ set( libSources
|
||||
playlist/dynamic/widgets/CollapsibleControls.cpp
|
||||
playlist/dynamic/widgets/DynamicSetupWidget.cpp
|
||||
playlist/dynamic/widgets/LoadingSpinner.cpp
|
||||
playlist/dynamic/database/DatabaseControl.cpp
|
||||
playlist/dynamic/database/DatabaseGenerator.cpp
|
||||
|
||||
network/bufferiodevice.cpp
|
||||
network/msgprocessor.cpp
|
||||
@@ -164,29 +153,19 @@ set( libSources
|
||||
utils/querylabel.cpp
|
||||
utils/elidedlabel.cpp
|
||||
utils/imagebutton.cpp
|
||||
utils/logger.cpp
|
||||
utils/progresstreeview.cpp
|
||||
utils/proxystyle.cpp
|
||||
utils/widgetdragfilter.cpp
|
||||
utils/animatedsplitter.cpp
|
||||
utils/xspfloader.cpp
|
||||
utils/xspfgenerator.cpp
|
||||
utils/jspfloader.cpp
|
||||
utils/spotifyparser.cpp
|
||||
utils/rdioparser.cpp
|
||||
utils/shortenedlinkparser.cpp
|
||||
|
||||
widgets/newplaylistwidget.cpp
|
||||
widgets/searchwidget.cpp
|
||||
widgets/SeekSlider.cpp
|
||||
widgets/playlisttypeselectordlg.cpp
|
||||
widgets/welcomewidget.cpp
|
||||
widgets/welcomeplaylistmodel.cpp
|
||||
widgets/overlaywidget.cpp
|
||||
widgets/HeaderLabel.cpp
|
||||
widgets/SocialPlaylistWidget.cpp
|
||||
widgets/infowidgets/sourceinfowidget.cpp
|
||||
widgets/infowidgets/ArtistInfoWidget.cpp
|
||||
widgets/infowidgets/AlbumInfoWidget.cpp
|
||||
|
||||
kdsingleapplicationguard/kdsingleapplicationguard.cpp
|
||||
kdsingleapplicationguard/kdsharedmemorylocker.cpp
|
||||
@@ -202,18 +181,18 @@ set( libHeaders
|
||||
|
||||
aclsystem.h
|
||||
collection.h
|
||||
webcollection.h
|
||||
query.h
|
||||
resolver.h
|
||||
result.h
|
||||
source.h
|
||||
sourceplaylistinterface.h
|
||||
viewpage.h
|
||||
viewmanager.h
|
||||
globalactionmanager.h
|
||||
contextmenu.h
|
||||
dropjob.h
|
||||
|
||||
artist.h
|
||||
album.h
|
||||
track.h
|
||||
playlist.h
|
||||
|
||||
sip/SipPlugin.h
|
||||
@@ -237,7 +216,6 @@ set( libHeaders
|
||||
database/databasecommand_addfiles.h
|
||||
database/databasecommand_deletefiles.h
|
||||
database/databasecommand_dirmtimes.h
|
||||
database/databasecommand_filemtimes.h
|
||||
database/databasecommand_loadfile.h
|
||||
database/databasecommand_logplayback.h
|
||||
database/databasecommand_addsource.h
|
||||
@@ -259,23 +237,18 @@ set( libHeaders
|
||||
database/databasecommand_setdynamicplaylistrevision.h
|
||||
database/databasecommand_createdynamicplaylist.h
|
||||
database/databasecommand_loaddynamicplaylist.h
|
||||
database/databasecommand_loaddynamicplaylistentries.h
|
||||
database/databasecommand_deletedynamicplaylist.h
|
||||
database/databasecommand_loadallautoplaylists.h
|
||||
database/databasecommand_loadallstations.h
|
||||
database/databasecommand_addclientauth.h
|
||||
database/databasecommand_clientauthvalid.h
|
||||
database/databasecommand_socialaction.h
|
||||
database/databasecommand_loadsocialactions.h
|
||||
database/databasecommand_genericselect.h
|
||||
|
||||
infosystem/infosystem.h
|
||||
infosystem/infosystemworker.h
|
||||
infosystem/infosystemcache.h
|
||||
infosystem/infoplugins/generic/echonestplugin.h
|
||||
infosystem/infoplugins/generic/lastfmplugin.h
|
||||
infosystem/infoplugins/generic/musixmatchplugin.h
|
||||
infosystem/infoplugins/generic/musicbrainzPlugin.h
|
||||
infosystem/infoplugins/echonestplugin.h
|
||||
infosystem/infoplugins/lastfmplugin.h
|
||||
infosystem/infoplugins/musixmatchplugin.h
|
||||
|
||||
network/bufferiodevice.h
|
||||
network/msgprocessor.h
|
||||
@@ -312,7 +285,6 @@ set( libHeaders
|
||||
playlist/albumitemdelegate.h
|
||||
playlist/albumview.h
|
||||
playlist/artistview.h
|
||||
playlist/customplaylistview.h
|
||||
|
||||
playlist/topbar/topbar.h
|
||||
playlist/topbar/clearbutton.h
|
||||
@@ -325,6 +297,7 @@ set( libHeaders
|
||||
|
||||
playlist/dynamic/DynamicPlaylist.h
|
||||
playlist/dynamic/DynamicControl.h
|
||||
playlist/dynamic/GeneratorFactory.h
|
||||
playlist/dynamic/GeneratorInterface.h
|
||||
playlist/dynamic/DynamicView.h
|
||||
playlist/dynamic/DynamicModel.h
|
||||
@@ -339,58 +312,39 @@ set( libHeaders
|
||||
playlist/dynamic/widgets/CollapsibleControls.h
|
||||
playlist/dynamic/widgets/DynamicSetupWidget.h
|
||||
playlist/dynamic/widgets/LoadingSpinner.h
|
||||
playlist/dynamic/database/DatabaseControl.h
|
||||
playlist/dynamic/database/DatabaseGenerator.h
|
||||
|
||||
utils/tomahawkutils.h
|
||||
utils/querylabel.h
|
||||
utils/elidedlabel.h
|
||||
utils/animatedcounterlabel.h
|
||||
utils/imagebutton.h
|
||||
utils/progresstreeview.h
|
||||
utils/widgetdragfilter.h
|
||||
utils/animatedsplitter.h
|
||||
utils/xspfloader.h
|
||||
utils/xspfgenerator.h
|
||||
utils/jspfloader.h
|
||||
utils/spotifyparser.h
|
||||
utils/rdioparser.h
|
||||
utils/shortenedlinkparser.h
|
||||
|
||||
widgets/newplaylistwidget.h
|
||||
widgets/searchwidget.h
|
||||
widgets/SeekSlider.h
|
||||
widgets/playlisttypeselectordlg.h
|
||||
widgets/welcomewidget.h
|
||||
widgets/welcomeplaylistmodel.h
|
||||
widgets/overlaywidget.h
|
||||
widgets/HeaderLabel.h
|
||||
widgets/SocialPlaylistWidget.h
|
||||
widgets/infowidgets/sourceinfowidget.h
|
||||
widgets/infowidgets/ArtistInfoWidget.h
|
||||
widgets/infowidgets/AlbumInfoWidget.h
|
||||
|
||||
kdsingleapplicationguard/kdsingleapplicationguard.h
|
||||
kdsingleapplicationguard/kdsharedmemorylocker.h
|
||||
kdsingleapplicationguard/kdtoolsglobal.h
|
||||
kdsingleapplicationguard/kdlockedsharedmemorypointer.h
|
||||
)
|
||||
|
||||
set( libHeaders_NoMOC
|
||||
viewpage.h
|
||||
|
||||
infosystem/infoplugins/unix/imageconverter.h
|
||||
|
||||
playlist/dynamic/GeneratorInterface.h
|
||||
playlist/dynamic/GeneratorFactory.h
|
||||
|
||||
utils/tomahawkutils.h
|
||||
playlist/dynamic/GeneratorInterface.h
|
||||
)
|
||||
|
||||
set( libUI ${libUI}
|
||||
widgets/playlisttypeselectordlg.ui
|
||||
widgets/newplaylistwidget.ui
|
||||
widgets/searchwidget.ui
|
||||
widgets/welcomewidget.ui
|
||||
widgets/SocialPlaylistWidget.ui
|
||||
widgets/infowidgets/sourceinfowidget.ui
|
||||
widgets/infowidgets/ArtistInfoWidget.ui
|
||||
widgets/infowidgets/AlbumInfoWidget.ui
|
||||
playlist/topbar/topbar.ui
|
||||
playlist/infobar/infobar.ui
|
||||
)
|
||||
@@ -413,14 +367,6 @@ include_directories( . ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/.
|
||||
${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 )
|
||||
SET( OS_SPECIFIC_LINK_LIBRARIES
|
||||
@@ -438,30 +384,13 @@ ENDIF( WIN32 )
|
||||
IF( APPLE )
|
||||
FIND_LIBRARY( COREAUDIO_LIBRARY CoreAudio )
|
||||
FIND_LIBRARY( COREFOUNDATION_LIBRARY CoreFoundation )
|
||||
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 )
|
||||
MARK_AS_ADVANCED( COREAUDIO_LIBRARY COREFOUNDATION_LIBRARY )
|
||||
|
||||
SET( OS_SPECIFIC_LINK_LIBRARIES
|
||||
${OS_SPECIFIC_LINK_LIBRARIES}
|
||||
# System
|
||||
${COREAUDIO_LIBRARY}
|
||||
${COREFOUNDATION_LIBRARY}
|
||||
${FOUNDATION_LIBRARY}
|
||||
${SCRIPTINGBRIDGE_LIBRARY}
|
||||
|
||||
/System/Library/Frameworks/AppKit.framework
|
||||
)
|
||||
ENDIF( APPLE )
|
||||
|
||||
@@ -486,7 +415,6 @@ target_link_libraries( tomahawklib
|
||||
${TAGLIB_LIBRARIES}
|
||||
${CLUCENE_LIBRARIES}
|
||||
${LIBECHONEST_LIBRARY}
|
||||
${QT_QTUITOOLS_LIBRARY}
|
||||
${QT_LIBRARIES}
|
||||
${OS_SPECIFIC_LINK_LIBRARIES}
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
|
@@ -18,14 +18,12 @@
|
||||
|
||||
#include "aclsystem.h"
|
||||
|
||||
#include <QtDebug>
|
||||
#include <QMutexLocker>
|
||||
#include <QVariant>
|
||||
|
||||
#include <tomahawksettings.h>
|
||||
|
||||
#include "utils/logger.h"
|
||||
|
||||
|
||||
ACLSystem* ACLSystem::s_instance = 0;
|
||||
|
||||
ACLSystem*
|
||||
|