summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt31
-rw-r--r--appveyor.yml162
-rw-r--r--cmake/ctest-to-junit.xsl54
-rw-r--r--res/controllers/Roland_DJ-505-scripts.js102
-rw-r--r--res/images/library/ic_library_cross.svg208
-rw-r--r--res/images/library/ic_library_cross_grey.svg8
-rw-r--r--res/images/library/ic_library_cross_orange.svg8
-rw-r--r--res/mixxx.qrc3
-rw-r--r--res/skins/Deere/style.qss33
-rw-r--r--res/skins/LateNight/style.qss24
-rw-r--r--res/skins/Shade/skin.xml10
-rw-r--r--res/skins/Shade/style.qss29
-rw-r--r--res/skins/Tango/library.xml22
-rw-r--r--res/skins/Tango/style.qss39
-rw-r--r--res/skins/default.qss12
-rw-r--r--src/library/library.cpp20
-rw-r--r--src/library/library.h4
-rw-r--r--src/mixxxapplication.cpp2
-rw-r--r--src/skin/legacyskinparser.cpp8
-rw-r--r--src/test/rgbcolor_test.cpp65
-rw-r--r--src/util/color/rgbcolor.h153
-rw-r--r--src/util/optional.h24
-rw-r--r--src/widget/wsearchlineedit.cpp85
-rw-r--r--src/widget/wsearchlineedit.h4
24 files changed, 703 insertions, 407 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d9d4482aef..10e694ae4b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -117,7 +117,11 @@ else()
message(STATUS "Support for ccache: ${CCACHE_SUPPORT}")
endif()
+set_property(DIRECTORY APPEND
+ PROPERTY CMAKE_CONFIGURE_DEPENDS
+ "${CMAKE_SOURCE_DIR}/.git/index")
+# uses GIT_BRANCH and GIT_COMMIT_COUNT
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/src/build.h.template"
"${CMAKE_CURRENT_BINARY_DIR}/src/build.h"
@@ -692,16 +696,19 @@ if(UNIX AND NOT APPLE)
endif()
# Disable warnings in generated source files
-set_property(
- SOURCE src/library/rekordbox/rekordbox_anlz.cpp
- APPEND_STRING
- PROPERTY COMPILE_OPTIONS -Wno-unused-parameter
-)
-set_property(
- SOURCE src/library/rekordbox/rekordbox_pdb.cpp
- APPEND_STRING
- PROPERTY COMPILE_OPTIONS -Wno-unused-parameter -Wno-switch
-)
+if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" # GNU is GNU GCC
+ OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+ set_property(
+ SOURCE src/library/rekordbox/rekordbox_anlz.cpp
+ APPEND_STRING
+ PROPERTY COMPILE_OPTIONS -Wno-unused-parameter
+ )
+ set_property(
+ SOURCE src/library/rekordbox/rekordbox_pdb.cpp
+ APPEND_STRING
+ PROPERTY COMPILE_OPTIONS -Wno-unused-parameter -Wno-switch
+ )
+endif()
option(WARNINGS_PEDANTIC "Let the compiler show even more warnings" OFF)
if(MSVC)
@@ -955,6 +962,7 @@ add_executable(mixxx-test
src/test/readaheadmanager_test.cpp
src/test/replaygaintest.cpp
src/test/rescalertest.cpp
+ src/test/rgbcolor_test.cpp
src/test/samplebuffertest.cpp
src/test/sampleutiltest.cpp
src/test/schemamanager_test.cpp
@@ -1207,6 +1215,9 @@ add_library(MP3GuessEnc STATIC EXCLUDE_FROM_ALL
lib/mp3guessenc-0.27.4/decode.c
lib/mp3guessenc-0.27.4/bit_utils.c
)
+if(WIN32)
+ target_compile_definitions(MP3GuessEnc PRIVATE __WINDOWS__)
+endif()
target_include_directories(MP3GuessEnc SYSTEM PUBLIC lib/mp3guessenc-0.27.4)
target_link_libraries(mixxx-lib PUBLIC MP3GuessEnc)
diff --git a/appveyor.yml b/appveyor.yml
index 0ac27af9dd..2be92474b6 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -31,7 +31,8 @@ matrix:
skip_commits:
files:
- doc/
- - LICENCE
+ - .travis.yml
+ - LICENSE
- README
- README.md
- CHANGELOG
@@ -48,20 +49,82 @@ for:
clone_folder: /home/appveyor/projects/mixxx
+ cache:
+ - /home/appveyor/.ccache
+
install:
- sudo apt-get update
- - sudo apt-get -y install gdb libavformat-dev libchromaprint-dev libfaad-dev libflac-dev libid3tag0-dev libmad0-dev libmodplug-dev libmp3lame-dev libmp4v2-dev libopus-dev libopusfile-dev libportmidi-dev libprotobuf-dev libqt5opengl5-dev libqt5sql5-sqlite libqt5svg5-dev librubberband-dev libshout3-dev libsndfile1-dev libsqlite3-dev libtag1-dev libupower-glib-dev libusb-1.0-0-dev libwavpack-dev portaudio19-dev protobuf-compiler qt5-default qtscript5-dev libqt5x11extras5-dev scons qt5keychain-dev liblilv-dev libsoundtouch-dev
+ - sudo apt-get -y install
+ ccache
+ gdb
+ libavformat-dev
+ libchromaprint-dev
+ libfaad-dev
+ libflac-dev
+ libid3tag0-dev
+ liblilv-dev
+ libmad0-dev
+ libmodplug-dev
+ libmp3lame-dev
+ libmp4v2-dev
+ libopus-dev
+ libopusfile-dev
+ libportmidi-dev
+ libprotobuf-dev
+ libqt5opengl5-dev
+ libqt5sql5-sqlite
+ libqt5svg5-dev
+ libqt5x11extras5-dev
+ librubberband-dev
+ libshout3-dev
+ libsndfile1-dev
+ libsoundtouch-dev
+ libsqlite3-dev
+ libtag1-dev
+ libupower-glib-dev
+ libusb-1.0-0-dev
+ libwavpack-dev
+ portaudio19-dev
+ protobuf-compiler
+ python-pip
+ qt5-default
+ qt5keychain-dev
+ qtscript5-dev
+ xsltproc
+ - sudo pip install cmake
+
+ before_build:
+ # Limit cache size to 100 MB
+ - ccache -M 100M
+ - ccache -c
+ - ccache -s
build_script:
- # ffmpeg=1 requires FFmpeg 4.0, but Ubuntu 18.04 still provides only FFmpeg 3.4.x
- - scons -j4 test=1 mad=1 faad=1 opus=1 modplug=1 wv=1 hss1394=0 virtualize=0 debug_assertions_fatal=1 verbose=0 localecompare=1
+ - export CMAKE_BUILD_PARALLEL_LEVEL="$(nproc)"
+ - mkdir cmake_build
+ - cd cmake_build
+ - cmake
+ -L
+ -DFAAD=ON
+ -DHSS1394=OFF
+ -DLOCALECOMPARE=ON
+ -DMAD=ON
+ -DMODPLUG=ON
+ -DOPUS=ON
+ -DWAVPACK=ON
+ ..
+ - cmake --build .
+ - sudo cmake --build . --target install
test_script:
- - xvfb-run -- ./mixxx-test --gtest_output=xml:test_results.xml
- - xvfb-run -- ./mixxx-test --benchmark
+ - export CTEST_OUTPUT_ON_FAILURE=1
+ - xvfb-run -- ctest -T test --no-compress-output
+ - xvfb-run -- cmake --build . --target benchmark
after_test:
- - curl -F 'file=@test_results.xml' "https://ci.appveyor.com/api/testresults/junit/$APPVEYOR_JOB_ID"
+ - xsltproc -o ctest-to-junit-results.xml ../cmake/ctest-to-junit.xsl Testing/*/Test.xml
+ - curl -F 'file=@ctest-to-junit-results.xml' "https://ci.appveyor.com/api/testresults/junit/$APPVEYOR_JOB_ID"
+
########## END UBUNTU SPECIFIC CONFIGURATION ##########
@@ -81,41 +144,90 @@ for:
cache:
- C:\mixxx-buildserver
+ - C:\Users\appveyor\clcache
environment:
ENVIRONMENTS_URL: https://downloads.mixxx.org/builds/buildserver/2.3.x-windows/
ENVIRONMENTS_PATH: C:\mixxx-buildserver
+ ENVIRONMENT_NAME: 2.3-j00013-PLATFORM-CONFIGURATION-static-36f44bd2-minimal
+ QT_VERSION: 5.12.0
+ MSVC_PATH: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community"
+ PATH: 'C:\Python37-x64;C:\Python37-x64\Scripts;%PATH%'
+
install:
- - set /P ENVIRONMENT_NAME=<build/windows/golden_environment
- - call set ENVIRONMENT_NAME=%%ENVIRONMENT_NAME:PLATFORM=%platform%%%
- - call set ENVIRONMENT_NAME=%%ENVIRONMENT_NAME:CONFIGURATION=%configuration%%%
- - cd %TEMP%
- - echo *** Downloading precompiled build environment if not in build-cache
- - cd %APPVEYOR_BUILD_FOLDER%
- - build\windows\install_buildenv.bat %ENVIRONMENTS_URL% %ENVIRONMENT_NAME% %ENVIRONMENTS_PATH%
+ - set ENVIRONMENT_NAME=%%ENVIRONMENT_NAME:PLATFORM=%platform%%%
+ - set ENVIRONMENT_NAME=%%ENVIRONMENT_NAME:CONFIGURATION=%configuration%%%
+ - set WINLIB_PATH=%ENVIRONMENTS_PATH%\%ENVIRONMENT_NAME%
+ - IF EXIST %WINLIB_PATH% (
+ echo Using cached environment %WINLIB_PATH%...
+ ) else (
+ mkdir %ENVIRONMENTS_PATH% &&
+ echo Downloading environment %ENVIRONMENT_NAME%... &&
+ curl -fsS -L -o%ENVIRONMENTS_PATH%\%ENVIRONMENT_NAME%.zip %ENVIRONMENTS_URL%/%ENVIRONMENT_NAME%.zip &&
+ echo Unpacking environment %ENVIRONMENT_NAME% to %ENVIRONMENTS_PATH%... &&
+ 7z -o%ENVIRONMENTS_PATH% x %ENVIRONMENTS_PATH%\%ENVIRONMENT_NAME%.zip || exit 1
+ )
+ - choco install ninja
+ - python -m pip install git+https://github.com/frerich/clcache.git
before_build:
+ - set PATH=%PATH:C:\Program Files\Git\usr\bin;=%
+ - set QT_PATH=%WINLIB_PATH%\Qt-%QT_VERSION%
+ - set CMAKE_BUILD_PARALLEL_LEVEL=%NUMBER_OF_CORES%
+ - call "%MSVC_PATH%\VC\Auxiliary\Build\vcvarsall.bat" x64
- cd %APPVEYOR_BUILD_FOLDER%
+ # Limit cache size to 100 MB
+ - clcache -M 100000000
+ - clcache -c
+ - clcache -s
+ # Improve clcache performance
+ - set CLCACHE_SERVER=1
+ - set CLCACHE_HARDLINK=1
+ - ps: Start-Process clcache-server
build_script:
- - build\appveyor\build_mixxx.bat %platform% %configuration% %ENVIRONMENTS_PATH%\%ENVIRONMENT_NAME%
+ - mkdir cmake_build
+ - cd cmake_build
+ - cmake
+ -L
+ -DCMAKE_BUILD_TYPE=Release
+ -DCMAKE_INSTALL_PREFIX=C:\mixxx
+ -DCMAKE_PREFIX_PATH=%WINLIB_PATH%;%QT_PATH%
+ -DMEDIAFOUNDATION=ON
+ -DOPUS=ON
+ -DLOCALECOMPARE=ON
+ -DSTATIC_DEPS=ON
+ -G "Ninja"
+ ..
+ - cmake --build .
+ - cmake --build . --target install
+ # Generate EXE/MSI installers
+ - cpack -G "NSIS"
+ - cpack -G "WIX"
test_script:
- - echo *** Testing
- # Calling mixxx-test under bash to have standard output
- # and use stdbuf to unbuffer standard & error output
- - bash -c "stdbuf -oL -eL dist*/mixxx-test.exe --gtest_output=xml:test_results.xml 2>&1"
- - timeout 5 > NUL
- - bash -c "stdbuf -oL -eL dist*/mixxx-test.exe --benchmark 2>&1"
- - timeout 5 > NUL
+ # Calling mixxx-test under bash to have standard output and use stdbuf to
+ # unbuffer standard & error output
+ - set CTEST_OUTPUT_ON_FAILURE=1
+ - ctest -C "Release" -T test --no-compress-output
+ - cmake --build . --target benchmark
after_test:
- - ps: (new-object net.webclient).UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\test_results.xml))
+ # Found at https://help.appveyor.com/discussions/suggestions/5298-support-ctest-xml-test-results
+ - ps: |
+ $ctest_xml = Get-ChildItem -Path Testing\*\Test.xml
+ $ctest_to_junit_xsl = Get-ChildItem -Path ..\cmake\ctest-to-junit.xsl
+ $XSLInputElement = New-Object System.Xml.Xsl.XslCompiledTransform
+ $XSLInputElement.Load($ctest_to_junit_xsl)
+ $XSLInputElement.Transform((Resolve-Path $ctest_xml), (Join-Path (Resolve-Path .) "ctest-to-junit-results.xml"))
+ $wc = New-Object 'System.Net.WebClient'
+ $wc.UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\ctest-to-junit-results.xml))
+
artifacts:
- - path: '*.exe'
- - path: '*.msi'
+ - path: 'cmake_build/*.exe'
+ - path: 'cmake_build/*.msi'
on_finish:
# Uncomment the following line if you don't want the build VM to be destroyed
diff --git a/cmake/ctest-to-junit.xsl b/cmake/ctest-to-junit.xsl
new file mode 100644
index 0000000000..8bd53978b6
--- /dev/null
+++ b/cmake/ctest-to-junit.xsl
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+This XSLT stylesheet is taken from the jenkins-ctest-plugin by Version One,
+Inc. and Ryan Pavlik <abiryan@ryand.net> and is subject to the terms of the
+MIT License.
+
+It was taken from this GitHub repositiory:
+ https://github.com/rpavlik/jenkins-ctest-plugin
+
+Includes modifications by Jan Holthuis to add support for skipped/errored
+tests.
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="xml" indent="yes" />
+ <xsl:template match="/">
+ <testsuites>
+ <xsl:variable name="buildName" select="//Site/@BuildName"/>
+ <xsl:variable name="numberOfTests" select="count(//Site/Testing/Test)"/>
+ <xsl:variable name="numberOfFailures" select="count(//Site/Testing/Test[@Status!='passed'])" />
+ <testsuite name="CTest"
+ tests="{$numberOfTests}" time="0"
+ failures="{$numberOfFailures}" errors="0"
+ skipped="0">
+ <xsl:for-each select="//Site/Testing/Test">
+ <xsl:variable name="testName" select="translate(Name, '-', '_')"/>
+ <xsl:variable name="duration" select="Results/NamedMeasurement[@name='Execution Time']/Value"/>
+ <xsl:variable name="status" select="@Status"/>
+ <xsl:variable name="output" select="Results/Measurement/Value"/>
+ <xsl:variable name="className" select="translate(Path, '/.', '.')"/>
+ <testcase classname="projectroot{$className}"
+ name="{$testName}"
+ time="{$duration}">
+ <xsl:if test="@Status='failed'">
+ <failure>
+ <xsl:value-of select="$output" />
+ </failure>
+ </xsl:if>
+ <xsl:if test="@Status='errored'">
+ <error>
+ <xsl:value-of select="$output" />
+ </error>
+ </xsl:if>
+ <xsl:if test="@Status='notrun'">
+ <skipped />
+ </xsl:if>
+ <system-out>
+ <xsl:value-of select="$output" />
+ </system-out>
+ </testcase>
+ </xsl:for-each>
+ </testsuite>
+ </testsuites>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/res/controllers/Roland_DJ-505-scripts.js b/res/controllers/Roland_DJ-505-scripts.js
index 48d97fc5fe..be2ddb4f77 100644
--- a/res/controllers/Roland_DJ-505-scripts.js
+++ b/res/controllers/Roland_DJ-505-scripts.js
@@ -297,21 +297,21 @@ DJ505.sortLibrary = function(channel, control, value, _status, _group) {
var sortColumn;
switch (control) {
- case 0x12: // SONG
- sortColumn = 1;
- break;
- case 0x13: // BPM
- sortColumn = 14;
- break;
- case 0x14: // ARTIST
- sortColumn = 0;
- break;
- case 0x1E: // KEY
- sortColumn = 19;
- break;
- default:
- // unknown sort column
- return;
+ case 0x12: // SONG
+ sortColumn = 1;
+ break;
+ case 0x13: // BPM
+ sortColumn = 14;
+ break;
+ case 0x14: // ARTIST
+ sortColumn = 0;
+ break;
+ case 0x1E: // KEY
+ sortColumn = 19;
+ break;
+ default:
+ // unknown sort column
+ return;
}
engine.setValue("[Library]", "sort_column_toggle", sortColumn);
};
@@ -438,6 +438,44 @@ DJ505.Deck = function(deckNumbers, offset) {
}
};
+ /* Platter Spin LED Indicator on Jog Wheels
+ *
+ * The Controller features a LED indicator that imitates a spinning
+ * platter when the deck is playing and also shows to position inside a
+ * bar.
+ *
+ * LED indicator values:
+ * - 0x00 - 0x1F: Beat 0 (downbeat) to 1
+ * - 0x20 - 0x3F: Beat 1 to 2
+ * - 0x40 - 0x5F: Beat 2 to 3
+ * - 0x60 - 0x7F: Beat 3 (upbeat) to 0 (next downbeat)
+ *
+ * TODO: Add proper bar support for the LED indicators
+ *
+ * Mixx currently does not support bar detection, so we don't know which
+ * of the 4 beats in a we are on. This has been worked around by counting
+ * beats manually, but this is error prone and does not support moving
+ * backwards in a track, has problems with loops, does not detect hotcue
+ * jumps and does not indicate the downbeat (obviously).
+ *
+ * See Launchpad issue: https://bugs.launchpad.net/mixxx/+bug/419155
+ */
+ this.beatIndex = 0;
+ this.lastBeatDistance = 0;
+ engine.makeConnection(this.currentDeck, "beat_distance", function(value) {
+ // Check if we're already in front of the next beat.
+ if (value < this.lastBeatDistance) {
+ this.beatIndex = (this.beatIndex + 1) % 4;
+ }
+ this.lastBeatDistance = value;
+
+ // Since deck indices start with 1, we use 0xAF + deck for the status
+ // byte, so that we 0xB0 for the first deck.
+ var status = 0xAF + script.deckFromGroup(this.currentDeck);
+
+ // Send a value between 0x00 and 0x7F to set jog wheel LED indicator
+ midi.sendShortMsg(status, 0x06, Math.round(0x1f * value + 0x20 * this.beatIndex));
+ });
// ========================== LOOP SECTION ==============================
@@ -1113,24 +1151,24 @@ DJ505.PadSection.prototype.paramButtonPressed = function(channel, control, value
}
var button;
switch (control) {
- case 0x2A: // PARAMETER 2 -
- if (this.currentMode.param2MinusButton) {
- button = this.currentMode.param2MinusButton;
- break;
- }
- /* falls through */
- case 0x28: // PARAMETER -
- button = this.currentMode.paramMinusButton;
+ case 0x2A: // PARAMETER 2 -
+ if (this.currentMode.param2MinusButton) {
+ button = this.currentMode.param2MinusButton;
break;
- case 0x2B: // PARAMETER 2 +
- if (this.currentMode.param2PlusButton) {
- button = this.currentMode.param2PlusButton;
- break;
- }
- /* falls through */
- case 0x29: // PARAMETER +
- button = this.currentMode.paramPlusButton;
+ }
+ /* falls through */
+ case 0x28: // PARAMETER -
+ button = this.currentMode.paramMinusButton;
+ break;
+ case 0x2B: // PARAMETER 2 +
+ if (this.currentMode.param2PlusButton) {
+ button = this.currentMode.param2PlusButton;
break;
+ }
+ /* falls through */
+ case 0x29: // PARAMETER +
+ button = this.currentMode.paramPlusButton;
+ break;
}
if (button) {
button.input(channel, control, value, status, group);
@@ -1499,7 +1537,7 @@ DJ505.RollMode.prototype.setLoopSize = function(loopSize) {
padLoopSize = (this.loopSize * Math.pow(2, i));
this.pads[i].inKey = "beatlooproll_" + padLoopSize + "_activate";
this.pads[i].outKey = "beatloop_" + padLoopSize + "_enabled";
- this.pads[i].off = (padLoopSize === 0.25) ? DJ505.PadColor.TURQUOISE : ((padLoopSize === 4) ? DJ505.PadColor.AQUAMARINE : (this.pads[i].color + DJ505.PadColor.DIM_MODIFIER));
+ this.pads[i].off = (padLoopSize === 0.25) ? DJ505.PadColor.TURQUOISE : ((padLoopSize === 4) ? DJ505.PadColor.AQUAMARINE : (this.color + DJ505.PadColor.DIM_MODIFIER));
}
this.reconnectComponents();
};
diff --git a/res/images/library/ic_library_cross.svg b/res/images/library/ic_library_cross.svg
deleted file mode 100644
index 850fb242c6..0000000000
--- a/res/images/library/ic_library_cross.svg
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- width="16"
- height="16"
- id="svg2"
- inkscape:version="0.92.3 (unknown)"
- sodipodi:docname="ic_library_cross.svg"
- style="display:inline"
- inkscape:export-filename=""
- inkscape:export-xdpi="135"
- inkscape:export-ydpi="135">
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1366"
- inkscape:window-height="740"
- id="namedview26"
- showgrid="true"
- inkscape:zoom="8"
- inkscape:cx="0.67922109"
- inkscape:cy="19.34323"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="ic_library_unchecked"
- inkscape:object-paths="true"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:snap-midpoints="true"
- inkscape:snap-page="true"
- inkscape:snap-bbox="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:bbox-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3788"
- empspacing="4"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true"
- originx="4"
- spacingx="1"
- spacingy="1"
- color="#00ffe0"
- opacity="0.1254902"
- empcolor="#0072ff"
- empopacity="0.25098039"
- originy="4"
- dotted="false" />
- </sodipodi:namedview>
- <title
- id="title5647">Mixxx 1.12+ iconset</title>
- <defs
- id="defs28">
- <linearGradient
- id="linearGradient5515"
- osb:paint="solid">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop5517" />
- </linearGradient>
- <linearGradient
- id="linearGradient4942">
- <stop
- style="stop-color:#ff6600;stop-opacity:1;"
- offset="0"
- id="stop4944" />
- <stop
- style="stop-color:#de5800;stop-opacity:1;"
- offset="1"
- id="stop4946" />
- </linearGradient>
- <linearGradient
- id="linearGradient5695-6">
- <stop
- style="stop-color:#3c3c3c;stop-opacity:1;"
- offset="0"
- id="stop5697-6" />
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="1"
- id="stop5699-7" />
- </linearGradient>
- <linearGradient
- id="linearGradient5695-4">
- <stop
- style="stop-color:#646464;stop-opacity:1;"
- offset="0"
- id="stop5697-7" />
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="1"
- id="stop5699-6" />
- </linearGradient>
- <linearGradient
- id="linearGradient4942-73">
- <stop
- style="stop-color:#ff6600;stop-opacity:1;"
- offset="0"
- id="stop4944-6" />
- <stop
- style="stop-color:#de5800;stop-opacity:1;"
- offset="1"
- id="stop4946-6" />
- </linearGradient>
- <linearGradient
- id="linearGradient4942-5">
- <stop
- style="stop-color:#ff6600;stop-opacity:1;"
- offset="0"
- id="stop4944-9" />
- <stop
- style="stop-color:#de5800;stop-opacity:1;"
- offset="1"
- id="stop4946-5" />
- </linearGradient>
- </defs>
- <metadata
- id="metadata4">
- <rdf:RDF>
- <rdf:Description
- rdf:about="">
- <dc:title />
- <dc:creator />
- <dc:rights />
- <dc:description />
- <dc:format>image/svg+xml</dc:format>
- <dc:language>en</dc:language>
- </rdf:Description>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Mixxx 1.12+ iconset</dc:title>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>Mixxx</rdf:li>
- <rdf:li>GUI</rdf:li>
- <rdf:li>Interface</rdf:li>
- <rdf:li>Icons</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:creator>
- <cc:Agent>
- <dc:title>s.brandt@mixxx.org</dc:title>
- </cc:Agent>
- </dc:creator>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:date>2014-04-18</dc:date>
- <dc:source>www.mixxx.org</dc:source>
- <dc:description>Iconset for use in Mixxx 1.12s+. Optimized for 48px (16px) icon size. Contains icons for preference menu and library widget
-
-Grid based on suggestions from http://techbase.kde.org/Projects/Oxygen/Style</dc:description>
- <dc:coverage />
- <dc:language>en</dc:language>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- style="display:inline"
- id="ic_library_crates"
- inkscape:label="#g6169"
- transform="translate(0,-16)">
- <g
- transform="matrix(0.415098,0,0,0.415098,-1.660392,19.54706)"
- inkscape:label="#g6145"
- id="ic_library_unchecked"
- style="display:inline">
- <path
- style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:#b3b3b3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
- d="m 23.272556,-3.7269755 c -8.503582,0 -16.8634872,8.359906 -16.8634872,16.8634875 0,8.503582 8.3599052,16.863487 16.8634872,16.863487 8.503582,0 16.863488,-8.359905 16.863488,-16.863487 0,-8.5035815 -8.359906,-16.8634875 -16.863488,-16.8634875 z m -6.81315,7.641268 c 0.615804,0 1.222017,0.243332 1.693877,0.715193 l 5.119273,5.119272 5.119273,-5.119272 c 0.943722,-0.943722 2.444032,-0.943722 3.387754,0 0.943722,0.943721 0.943722,2.444032 0,3.387754 l -5.119273,5.1192725 5.119273,5.119273 c 0.943722,0.943721 0.943722,2.444032 0,3.387754 -0.943722,0.943722 -2.444032,0.943722 -3.387754,0 l -5.119273,-5.119273 -5.119273,5.119273 c -0.943721,0.943722 -2.444032,0.943722 -3.387754,0 -0.943722,-0.943722 -0.943722,-2.444033 0,-3.387754 l 5.119273,-5.119273 -5.119273,-5.1192725 c -0.943722,-0.943722 -0.943722,-2.444033 0,-3.387754 0.471861,-0.471861 1.078073,-0.715193 1.693877,-0.715193 z"
- id="cross"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ssssssscssscssscssscsss"
- inkscape:export-filename=""
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- inkscape:label="#path3781" />
- </g>
- </g>
-</svg>
diff --git a/res/images/library/ic_library_cross_grey.svg b/res/images/library/ic_library_cross_grey.svg
new file mode 100644
index 0000000000..73d80c1c02
--- /dev/null
+++ b/res/images/library/ic_library_cross_grey.svg
@@ -0,0 +1,8 @@
+<svg width="19" height="19" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <title>Mixxx 1.12+ iconset</title>
+ <g transform="translate(0,-13)">
+ <g transform="matrix(.4151 0 0 .4151 -1.6604 19.547)">
+ <path d="m26.886-7.3406c-7.2888 0-14.454 7.1656-14.454 14.454 0 7.2888 7.1656 14.454 14.454 14.454 7.2888 0 14.454-7.1656 14.454-14.454 0-7.2888-7.1656-14.454-14.454-14.454zm-5.8398 6.5497c.52783 0 1.0474.20857 1.4519.61302l4.3879 4.3879 4.3879-4.3879c.8089-.8089 2.0949-.8089 2.9038 0s.8089 2.0949 0 2.9038l-4.3879 4.3879 4.3879 4.3879c.8089.8089.8089 2.0949 0 2.9038s-2.0949.8089-2.9038 0l-4.3879-4.3879-4.3879 4.3879c-.8089.8089-2.0949.8089-2.9038 0s-.8089-2.0949 0-2.9038l4.3879-4.3879-4.3879-4.3879c-.8089-.8089-.8089-2.0949 0-2.9038.40445-.40445.92406-.61302 1.4519-.61302z" color="#000000" fill="#b3b3b3" stroke-width="0"/>
+ </g>
+ </g>
+</svg>
diff --git a/res/images/library/ic_library_cross_orange.svg b/res/images/library/ic_library_cross_orange.svg
new file mode 100644
index 0000000000..f102affb9b
--- /dev/null
+++ b/res/images/library/ic_library_cross_orange.svg
@@ -0,0 +1,8 @@
+<svg width="19" height="19" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <title>Mixxx 1.12+ iconset</title>
+ <g transform="translate(0,-13)">
+ <g transform="matrix(.4151 0 0 .4151 -1.6604 19.547)">
+ <path d="m26.886-7.3406c-7.2888 0-14.454 7.1656-14.454 14.454 0 7.2888 7.1656 14.454 14.454 14.454 7.2888 0 14.454-7.1656 14.454-14.454 0-7.2888-7.1656-14.454-14.454-14.454zm-5.8398 6.5497c.52783 0 1.0474.20857 1.4519.61302l4.3879 4.3879 4.3879-4.3879c.8089-.8089 2.0949-.8089 2.9038 0s.8089 2.0949 0 2.9038l-4.3879 4.3879 4.3879 4.3879c.8089.8089.8089 2.0949 0 2.9038s-2.0949.8089-2.9038 0l-4.3879-4.3879-4.3879 4.3879c-.8089.8089-2.0949.8089-2.9038 0s-.8089-2.0949 0-2.9038l4.3879-4.3879-4.3879-4.3879c-.8089-.8089-.8089-2.0949 0-2.9038.40445-.40445.92406-.61302 1.4519-.61302z" color="#000000" fill="#f60" stroke-width="0"/>
+ </g>
+ </g>
+</svg>
diff --git a/res/mixxx.qrc b/res/mixxx.qrc
index 9b1833187c..545cba1fea 100644
--- a/res/mixxx.qrc
+++ b/res/mixxx.qrc
@@ -8,11 +8,12 @@
<!-- lock icon for crates, playlists & history -->
<file>images/library/ic_library_locked_tracklist.svg</file>
<file>images/library/cover_default.svg</file>
- <file>images/library/ic_library_cross.svg</file>
<file>images/library/ic_library_autodj.svg</file>
<file>images/library/ic_library_banshee.svg</file>
<file>images/library/ic_library_computer.svg</file> <!-- from Gnome high contrast icons LGPL 2.1 -->
<file>images/library/ic_library_crates.svg</file>
+ <file>images/library/ic_library_cross_grey.svg</file>
+ <file>images/library/ic_library_cross_orange.svg</file>
<file>images/library/ic_library_history.svg</file>
<file>images/library/ic_library_history_current.svg</file>
<file>images/library/ic_library_itunes.svg</file>
diff --git a/res/skins/Deere/style.qss b/res/skins/Deere/style.qss
index d73f7d60ff..6f03e9e621 100644
--- a/res/skins/Deere/style.qss
+++ b/res/skins/Deere/style.qss
@@ -354,31 +354,14 @@ WSearchLineEdit {
border: 1px solid #4B4B4B;
background-color: #1e1e1e;
color: #d2d2d2;
-}
-
-WSearchLineEdit:focus {
- margin: 0px 0px 0px 1px;
- padding: 2px;
- border: 1px solid #FF6600;
- background-color: #1e1e1e;
- color: #D6D6D6;
- selection-color: #222222;
- selection-background-color: #d2d2d2;
-}
- /* Clear button */
- WSearchLineEdit QToolButton {
- /* C++ code adds 3px in each dimension.
- height of search box inside the border: 22px
- make the button use the available height */
- height: 19px;
- width: 19px;
- }
- WSearchLineEdit QToolButton:!focus {
- image: url(skin:/icon/ic_lib_clear_search.svg);
- }
- WSearchLineEdit QToolButton:focus {
- image: url(skin:/icon/ic_lib_clear_search_focus.svg);
- }
+ }
+ WSearchLineEdit:focus {
+ border: 1px solid #FF6600;
+ color: #D6D6D6;
+ selection-color: #222222;
+ selection-background-color: #d2d2d2;
+ }
+ /* Clear button: see /skins/default.qss */
/* library preview deck */
#PreviewDeck {
diff --git a/res/skins/LateNight/style.qss b/res/skins/LateNight/style.qss
index a5bafb7af5..8d286e285f 100644
--- a/res/skins/LateNight/style.qss
+++ b/res/skins/LateNight/style.qss
@@ -9,7 +9,6 @@ WNumber,
WNumberPos,
WPushButton, WLibrary QPushButton,
WRecordingDuration,
-WSearchLineEdit,
WTime,
WTrackText,
WTrackProperty,
@@ -29,7 +28,6 @@ WOverview QPushButton */ {
}
/* regular font weight */
-WSearchLineEdit,
QToolTip {
font-weight: normal;
}
@@ -37,7 +35,6 @@ QToolTip {
/* regular case / no text transformation */
WKey,
WOverview,
-WSearchLineEdit,
WTrackProperty, WTrackText,
QToolTip,
/* WLibrary QMenu, */
@@ -191,7 +188,6 @@ WOverview QLabel {