diff options
-rw-r--r-- | CMakeLists.txt | 31 | ||||
-rw-r--r-- | appveyor.yml | 162 | ||||
-rw-r--r-- | cmake/ctest-to-junit.xsl | 54 | ||||
-rw-r--r-- | res/controllers/Roland_DJ-505-scripts.js | 102 | ||||
-rw-r--r-- | res/images/library/ic_library_cross.svg | 208 | ||||
-rw-r--r-- | res/images/library/ic_library_cross_grey.svg | 8 | ||||
-rw-r--r-- | res/images/library/ic_library_cross_orange.svg | 8 | ||||
-rw-r--r-- | res/mixxx.qrc | 3 | ||||
-rw-r--r-- | res/skins/Deere/style.qss | 33 | ||||
-rw-r--r-- | res/skins/LateNight/style.qss | 24 | ||||
-rw-r--r-- | res/skins/Shade/skin.xml | 10 | ||||
-rw-r--r-- | res/skins/Shade/style.qss | 29 | ||||
-rw-r--r-- | res/skins/Tango/library.xml | 22 | ||||
-rw-r--r-- | res/skins/Tango/style.qss | 39 | ||||
-rw-r--r-- | res/skins/default.qss | 12 | ||||
-rw-r--r-- | src/library/library.cpp | 20 | ||||
-rw-r--r-- | src/library/library.h | 4 | ||||
-rw-r--r-- | src/mixxxapplication.cpp | 2 | ||||
-rw-r--r-- | src/skin/legacyskinparser.cpp | 8 | ||||
-rw-r--r-- | src/test/rgbcolor_test.cpp | 65 | ||||
-rw-r--r-- | src/util/color/rgbcolor.h | 153 | ||||
-rw-r--r-- | src/util/optional.h | 24 | ||||
-rw-r--r-- | src/widget/wsearchlineedit.cpp | 85 | ||||
-rw-r--r-- | src/widget/wsearchlineedit.h | 4 |
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 { |